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有多快

  • 相关阅读:
    Java的自动拆箱和装箱
    记录一次买阿里云服务器、建站的经验
    java中的位运算符
    java String拼接时候的一个小问题
    java获取各类容器和数组的长度
    java多线程:循环屏障
    Spring框架10:spring编程式事务控制
    Spring框架9:spring实现声明式事务控制
    Spring框架8:spring使用AOP实现事务控制
    C++ 中的bind
  • 原文地址:https://www.cnblogs.com/XiHua/p/5077728.html
Copyright © 2011-2022 走看看