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

  • 相关阅读:
    粗浅看Struts2和Hibernate框架
    使用nexus搭建Maven私服
    在线支付功能的设计及其实现
    用户注册的邮箱激活模块的设计与实现
    WebService案例入门(基础篇)
    过滤器应用案例分析
    Java web文件上传下载
    Servlet常用操作(基础)
    AndroidStudio中导入SlidingMenu报错解决方案
    新浪微博Oauth2.0授权认证及SDK、API的使用(Android)
  • 原文地址:https://www.cnblogs.com/XiHua/p/5077728.html
Copyright © 2011-2022 走看看