平时写测试程序的时候常常要计算程序执行的时间,尤其是最近练习Intel多核编程时,需要判断打开openmp参数与否的执行时间的比较。
通常代码是这样写的:
#include <time.h>
clock_t start, stop;
....
start = clock();
do_something();
stop = clock();
printf("%f", (double)(stop-start)/1000.0) ;
.....
或者是求当前时间的秒值:
double t = (double) clock()/1000.0;
但是这样的代码在Windows平台下是正确的(当然会这样写也是因为上Intel培训课时,例程都是这么写的 ),而到了Linux平台下,这个程序就错了,会发现时间一下多了1000倍。
事实上,clock_t的值转换为秒应该是除以CLOCKS_PER_SEC这个宏,而这个宏在Windows平台下是1000,而到了Linux平台下就是1000000了。
因此程序正确的写法是:
#include <time.h>
clock_t start, stop;
....
start = clock();
do_something();
stop = clock();
printf("%f", (double)(stop-start)/(double)CLOCKS_PER_SEC) ;
.....
这样才能保证程序在跨平台移植时的正确性。
如今这个世道优盘病毒实在是越来越猖狂了。前些天就和同事处理了一个一台机器上lass病毒新变种的清除工作,没想到只隔了一天,还是同样那台机器又中lass病毒了,清除的时候发现病毒又进化了。我们就在纳闷,为什么在这里病毒进化得如此之快,每次出现的都是最新的、连互联网上都找不到资料的病毒?
说到电脑中毒,绝大多数问题都可以归结到用户使用习惯的问题,或者是用户操作不当导致的。比如,使用别人的优盘的时候,如果要安全的话,就不能直接双击打开,右键点击后打开也不行(以前没有考虑到这点,最近发现有的病毒会使“打开”以及“资源管理器”等直接关联到病毒程序的),最好是在命令行提示符(cmd)下执行start x:,或者是从资源管理器左侧菜单选择驱动器。
优盘的打开问题基本还是能记得的,问题最麻烦的就是感染病毒以后,硬盘的每个磁盘(Fixed Disk)下也都有了autorun.inf已经病毒程序。大家平时打开磁盘都已经习惯双击了,所以很容易通过双击打开磁盘的时候再次调用了病毒程序。
所以就想是否可以通过系统注册表禁用autorun.inf
在网络上搜索以后知道这项设置在注册表的位置是:HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下的NoDriveTypeAutoRun,默认值可能是0×91h或者0×95h。具体原理大家可以看网络上的文章学习,我取的值是0xddh(主要是禁用Fixed Disk),如果还用禁用光驱的自动播放功能,那么可以取值为0xbdh。
不过有了这样的设置,然后无法阻止优盘的的自动播放(autorun)
大家做这个设置的测试的时候,可以用下面的autorun.inf做测试:
[AutoRun]
OPEN=calc.exe
shellexecute=calc.exe
shell\Auto\command=calc.exe
自从9月初出差回来以后,电脑就总是频繁出现同样的故障——目前暂时怀疑为硬盘故障。
(全文…)