zoukankan      html  css  js  c++  java
  • memmove 对同一个指针不操作

    1、memmove 对同一个指针不操作,所以调用memmove之前不用比较两个指针是否相同

     2、使用memmove是比memcpy更安全的

    3、https://www.cnblogs.com/luoquan/p/5265273.html

    void CTestDLLDlg::OnBnClickedButton6()
    {
        const int size = 999999;
        char* data = new char[size];
        memset(data, 1, size - 1);
    
        char* data1 = new char[size];
        memset(data1, 'a', size - 1);
    
        clock_t begin = clock();
        for (int i = 0; i < size; ++i)
        {
            memmove(data1, data, size);
        }
        clock_t end = clock();
    
        double duration = 0;
        duration = (double)(end - begin) / CLOCKS_PER_SEC;
        CString str = _T("");
        str.Format(_T("-不同指针复制- %f---
    "), duration);
        OutputDebugString(str);
    
        clock_t begin1 = clock();
        for (int i = 0; i < size; ++i)
        {
            memmove(data1, data1, size);
        }
        clock_t end1 = clock();
    
        double duration1 = 0;
        duration1 = (double)(end1 - begin1) / CLOCKS_PER_SEC;
        CString str1 = _T("");
        str1.Format(_T("-同指针复制- %f---
    "), duration1);
        OutputDebugString(str1);
    
    
        clock_t begin2 = clock();
        for (int i = 0; i < size; ++i)
        {
        }
        clock_t end2 = clock();
    
        double duration2 = 0;
        duration2 = (double)(end1 - begin1) / CLOCKS_PER_SEC;
        CString str2 = _T("");
        str2.Format(_T("-空循环- %f---
    "), duration2);
        OutputDebugString(str2);
    
        delete data;
        data = nullptr;
    
        delete data1;
        data1 = nullptr;
    
    
    }

    显示结果是:

    -不同指针复制- 49.971000---
    -同指针复制- 38.833000---
    -空循环- 38.833000---

    将memmove换成memcpy,显示

    -不同指针复制- 49.782000---
    -同指针复制- 38.847000---
    -空循环- 38.847000---

    没觉得memcpy有多快

  • 相关阅读:
    02-17 位图验证码(一般处理程序)+AJAX
    02-18 报表
    SQLite 函数大全
    SQLite中的时间日期函数(转)
    DES,AeS加解密,MD5,SHA加密
    suspendlayout
    AES--高级数据加密标准
    C#中Validating和Validated事件
    Net操作Excel(终极方法NPOI)
    decimal,float和double的区别
  • 原文地址:https://www.cnblogs.com/XiHua/p/5077728.html
Copyright © 2011-2022 走看看