分享
 
 
 

Windows程序效率

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Windows是一个庞大的功能丰富的系统,并且为我们提供了强大的应用程序接口,使我们可以编写功能丰富的应用程序,但正因为Windows的复杂性和应用程序接口的强大,我们往往忽视了很多技术细节,使得写出来的程序效率较低,缺乏竞争力。以下是我总结的一些提高程序效率的规则,希望对提高程序质量有帮助。

减少程序在核心态和用户态之间的切换

我们知道Windows系统中的应用程序可以在两种状态下运行-用户态和核心态,但是如果进程在两种状态之间切换,则需要耗费上千个CPU周期,这对于高质量的程序来说是绝对不能容忍的。典型的例子是用户线程互斥的临界区和互斥体(Mutex),互斥体是核心态对象,应用程序使用它时会切换到核心态,而临界区则直接在用户态下工作,所以如果可能,应该用临界区取代互斥体。

使用线程代替进程以减少系统资源的开销

在Windows系统中,进程是资源非配的单位,线程是调度的单位,因为线程共享进程的地址控件,所以与创建进程相比,创建线程可以节省大量的系统资源开销。所以对于并发计算的问题,可以尽量使用线程机制来实现。

减少线程场景切换的开销

线程为应用程序提供了并发机制,使程序的多个代码段可以“同时”运行,比如使用多个线程提高费时的IO操作,但是不是线程愈多越好呢?当然不是,线程虽然使用进程地址空间,但仍有自己的运行环境(堆栈、临时令牌等),线程场景的切换是要耗费CPU资源的,同一个计算过程(不涉及IO操作),使用两个线程来完成比使用一个线程来完成所需要的时间实际是更多。

减少内存的跨边界(页)访问

在Windows系统中,内存是以页(4KB)为单位组织的,由于Windows是虚拟存储系统,内存中的页在不用时常换出到外存中,需要用到的时候再装入内存,这样可以使一个应用程序使用比实际内存大得多得地址范围。但是内存得换入换出与CPU得执行速度相比是很费时的IO操作。下面有两段几乎完全一样的程序,在VC下编译为release版本后,前一段的执行时间是后一段的200多倍

程序1:

char buf[8][4000];

char ch;

int i, j;

for(j=0; j<4000; j++)

{

for(i=0; i<8; j++)

{

ch = buf[i][j];

}

}

程序2:

char buf[8][4000];

char ch;

int i, j;

for(i=0; i<8; j++)

{

for(j=0; j<4000; j++)

{

ch = buf[i][j];

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有