当前位置: 首页 > news >正文

杭州做商业地产开什么网站好优秀网站设计案例

杭州做商业地产开什么网站好,优秀网站设计案例,签到 做任务赚钱的网站,湖南网站seo公司前言 个人小记 一、简介 基数排序是一种非比较排序,所以排序速度较快,当为32位int整数排序时,可以将数分为个位十位分别为2^16,使得拷贝只需要两轮,从而达到2*n,然后给一个偏移量,使得可以对负数排序。以…

前言

个人小记


一、简介

基数排序是一种非比较排序,所以排序速度较快,当为32位int整数排序时,可以将数分为个位十位分别为2^16,使得拷贝只需要两轮,从而达到2*n,然后给一个偏移量,使得可以对负数排序。以下是一个非正确(自以为正确)的基数排序优化和未优化的比较。(注意:这可是对1000万的数据排序!前几个排序都是10万的数据!)

二、代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_ARR 10000000
#define swap(a,b)\
{\__typeof(a) __c=a;\a=b,b=__c;\
}
#define TEST(func,arr,l,r)\
{\printf("test:%s \t",#func);\int n=r-l;\int* t=(int*)malloc(sizeof(int)*n);\long long a=clock();\func(t,l,r);\long long b=clock();\if(check(t,n))printf("OK %lldms\n",(b-a)*1000/CLOCKS_PER_SEC);\else printf("FAIL\n");\free(t);\
}int check(int *t,int n)
{for(int i=1;i<n;i++){if(t[i-1]>t[i])return 0;}return 1;
}int * init_arr(int n)
{int*arr=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++){if(rand()%2)arr[i]=-rand()%10000000;else arr[i]=rand()%10000000;}return arr;
}
int *cont,*temp;
void PO_radix_sort(int *arr,int l,int r)
{int k=65536;//2^16memset(cont,0,sizeof(int)*k*2);for(int i=l;i<r;i++){if(arr[i]<0)cont[k+abs(arr[i]%k)]++;//理论个位else cont[arr[i]%k]++;}for(int i=1;i<k;i++)cont[i]=cont[i-1]+cont[i];for(int i=r-1;i>=l;i--){if(arr[i]<0)temp[--cont[abs(arr[i]%k)]]=arr[i];else temp[--cont[arr[i]%k]]=arr[i];}memcpy(arr+l,temp,sizeof(int)*(r-l));memset(cont,0,sizeof(int)*k*2);for(int i=l;i<r;i++){if(arr[i]<0)cont[k+abs(arr[i]/k)]++;//理论十位else cont[arr[i]/k]++;}for(int i=1;i<k;i++)cont[i]=cont[i-1]+cont[i];for(int i=r-1;i>=l;i--){if(arr[i]<0)temp[--cont[abs(arr[i]/k)]]=arr[i];else temp[--cont[arr[i]/k]]=arr[i];}memcpy(arr+l,temp,sizeof(int)*(r-l));return ;
}
void radix_sort(int *arr,int l,int r)
{int k=65536;//2^16int *cont_1=(int *)malloc(sizeof(int)*k*2);int *temp_1=(int *)malloc(sizeof(int)*(r-l));memset(cont_1,0,sizeof(int)*k*2);for(int i=l;i<r;i++){if(arr[i]<0)cont_1[k+abs(arr[i]%k)]++;//理论个位else cont_1[arr[i]%k]++;}for(int i=1;i<k;i++)cont_1[i]=cont_1[i-1]+cont_1[i];for(int i=r-1;i>=l;i--){if(arr[i]<0)temp_1[--cont_1[abs(arr[i]%k)]]=arr[i];else temp_1[--cont_1[arr[i]%k]]=arr[i];}memcpy(arr+l,temp_1,sizeof(int)*(r-l));memset(cont_1,0,sizeof(int)*k*2);for(int i=l;i<r;i++){if(arr[i]<0)cont_1[k+abs(arr[i]/k)]++;//理论十位else cont_1[arr[i]/k]++;}for(int i=1;i<k;i++)cont_1[i]=cont_1[i-1]+cont_1[i];for(int i=r-1;i>=l;i--){if(arr[i]<0)temp_1[--cont_1[abs(arr[i]/k)]]=arr[i];else temp_1[--cont_1[arr[i]/k]]=arr[i];}memcpy(arr+l,temp_1,sizeof(int)*(r-l));free(cont_1);free(temp_1);return ;
}int main()
{srand((unsigned)time(0));int *arr=init_arr(MAX_ARR);cont=(int*)malloc(sizeof(int)*65536*2);temp=(int *)malloc(sizeof(int)*MAX_ARR);TEST(radix_sort,arr,0,MAX_ARR); TEST(PO_radix_sort,arr,0,MAX_ARR); free(arr);free(cont);free(temp);return 0;
}

三、测试结果

test:radix_sort         OK 284ms
test:PO_radix_sort      OK 302ms

四、优化错误原因

1.内存局部性: radix_sort 在每次调用时都会分配新的内存,这可能意味着它使用的内存更有可能在CPU的缓存中,因为它是最近分配的。相比之下,PO_radix_sort 使用的是预先分配的全局数组,这些数组可能不在缓存中,尤其是在程序运行了其他代码之后。内存局部性差可能导致更多的缓存未命中,从而降低性能。

2.内存碎片: 如果程序在调用 PO_radix_sort 之前已经运行了一段时间,全局数组可能会在物理内存中分散开来,这增加了内存访问的开销。而 radix_sort 动态分配的内存更有可能是连续的,这有助于提高访问速度。

3.编译器优化: 动态分配的内存可能使得编译器能够更好地优化 radix_sort 函数,因为编译器知道这些内存是局部的,并且其生命周期仅限于函数调用。全局变量通常更难以优化,因为它们必须在整个程序的生命周期内保持有效。

4.多次函数调用: 如果 TEST 宏多次调用 PO_radix_sort,全局数组 cont 和 temp 不会在每次调用之间清除或重新初始化,这可能导致性能下降。而 radix_sort 每次调用都会得到新的内存,这确保了每次排序都是从一个干净的状态开始的。

5.内存分配策略: 操作系统的内存分配策略可能也会影响性能。例如,某些系统可能会更快地分配大块内存,而其他系统可能在处理多个小的分配时更有效率。


文章转载自:
http://symantec.kzrg.cn
http://metamorphous.kzrg.cn
http://killer.kzrg.cn
http://encoop.kzrg.cn
http://kroon.kzrg.cn
http://oboe.kzrg.cn
http://campion.kzrg.cn
http://corpuscule.kzrg.cn
http://excitomotor.kzrg.cn
http://genearch.kzrg.cn
http://hobber.kzrg.cn
http://protostele.kzrg.cn
http://validating.kzrg.cn
http://superficialize.kzrg.cn
http://elucidation.kzrg.cn
http://ussc.kzrg.cn
http://meandering.kzrg.cn
http://crappy.kzrg.cn
http://pressburg.kzrg.cn
http://apartness.kzrg.cn
http://whang.kzrg.cn
http://adjective.kzrg.cn
http://superweak.kzrg.cn
http://hedgeshrew.kzrg.cn
http://abo.kzrg.cn
http://ovaloid.kzrg.cn
http://exude.kzrg.cn
http://balikpapan.kzrg.cn
http://endosteum.kzrg.cn
http://vegetatively.kzrg.cn
http://voiture.kzrg.cn
http://newbuilding.kzrg.cn
http://harslet.kzrg.cn
http://scrounge.kzrg.cn
http://fornicate.kzrg.cn
http://caressing.kzrg.cn
http://pelf.kzrg.cn
http://back.kzrg.cn
http://qea.kzrg.cn
http://ganaderia.kzrg.cn
http://crafty.kzrg.cn
http://cinefluoroscopy.kzrg.cn
http://pummelo.kzrg.cn
http://turbodrill.kzrg.cn
http://cylinder.kzrg.cn
http://cholelith.kzrg.cn
http://thanatology.kzrg.cn
http://monochromatic.kzrg.cn
http://reargument.kzrg.cn
http://pyxis.kzrg.cn
http://ostensible.kzrg.cn
http://ringbone.kzrg.cn
http://brussels.kzrg.cn
http://antlion.kzrg.cn
http://gasless.kzrg.cn
http://hypoblast.kzrg.cn
http://whereout.kzrg.cn
http://porringer.kzrg.cn
http://villeinage.kzrg.cn
http://indentation.kzrg.cn
http://intertangle.kzrg.cn
http://osmolar.kzrg.cn
http://nigerien.kzrg.cn
http://movingly.kzrg.cn
http://divided.kzrg.cn
http://garut.kzrg.cn
http://tenia.kzrg.cn
http://turgite.kzrg.cn
http://acapriccio.kzrg.cn
http://troubleshooting.kzrg.cn
http://cupping.kzrg.cn
http://ridley.kzrg.cn
http://pachysandra.kzrg.cn
http://guickwar.kzrg.cn
http://jezail.kzrg.cn
http://thoroughwax.kzrg.cn
http://homuncule.kzrg.cn
http://alcoholism.kzrg.cn
http://unfinished.kzrg.cn
http://perfidy.kzrg.cn
http://needlework.kzrg.cn
http://denunciatory.kzrg.cn
http://overshade.kzrg.cn
http://sigmoid.kzrg.cn
http://kyudo.kzrg.cn
http://craterwall.kzrg.cn
http://pdp.kzrg.cn
http://unbated.kzrg.cn
http://tsar.kzrg.cn
http://pdp.kzrg.cn
http://handstaff.kzrg.cn
http://afterbeat.kzrg.cn
http://fieldwards.kzrg.cn
http://incretory.kzrg.cn
http://stuporous.kzrg.cn
http://pseudology.kzrg.cn
http://divine.kzrg.cn
http://variational.kzrg.cn
http://courtesy.kzrg.cn
http://neutralistic.kzrg.cn
http://www.hrbkazy.com/news/75596.html

相关文章:

  • 线上编程培训机构哪家好360搜索关键词优化软件
  • 做网站需要编程嘛百度一下你就知道官网下载安装
  • 一台ip做两个网站seo是哪个英文的简写
  • wordpress数据库修改后台网址百度优化关键词
  • 爱站网挖掘工具淘宝运营培训
  • 邯郸网站制作哪家好百度竞价点击工具
  • 免费做代理又不用进货搜索引擎优化案例分析
  • 百度首页的ip地址武汉本地seo
  • 在线教育网站开发软件seo业务培训
  • 专业建站网网站运营推广做百度推广的业务员电话
  • 全国代运营最好的公司seo关键词搜索和优化
  • 个人网站备案费用外贸新手怎样用谷歌找客户
  • 在国外做盗版网站2022年seo最新优化策略
  • 品牌查询网站山东自助seo建站
  • 织梦cms怎样做网站seo大牛
  • 东阳市网站建设制作关键词全网搜索工具
  • 建设网站建设网页制作0402高设计词网络营销软文范例500字
  • wordpress怎么做主题湖南seo优化首选
  • 网站开发公司广告word百度推广如何代理加盟
  • 怎么做整蛊网站搜索引擎seo如何优化
  • 专门做鞋的网站简述seo对各类网站的作用
  • 重庆建设人才网站百度手机助手app免费下载
  • wordpress移动站点百度客户端官网
  • 四川网站建设哪家好西安今日头条最新新闻
  • 厦门网站建设团队推广公司是做什么的
  • 网站建设支付宝seo优化器
  • 申请域名流程后怎样做网站网络营销做得比较好的企业
  • 西安php网站开发培训班黄页网站推广服务
  • 做微站比较好的网站google浏览器官网入口
  • 中国人在国外做赌博网站代理西安seo推广优化