为什么一个项目“跑”在NetBeans内部终端的速度比在Windows命令提示符?(Why does

2019-09-17 03:34发布

我在这个论坛是新的,所以原谅我,如果我不要求在第一时间正确的问题。 我认为这是没有必要在这里提供的代码,因为我觉得它无关的代码和问题可能更普遍。

我已经写了,并内置在NetBeans 7.1.2在Windows XP中使用的MinGW(G ++)一个C ++项目。 两者的调试版本和发行版本,做工精细,并提供了计算的所需的输出。 但是,如果我在NetBeans的内部端子“运行”的项目(项目任一),I可以测量微秒115和130之间的计算时间。 如果我在Windows命令提示符下执行exe文件,我衡量微秒500和3000之间的计算时间。 (因为复位,并且由CPU分频在一个2.2GHz的英特尔Core 2 Duo具有2 GB的RAM。我通过读取CPU时钟的数目测量时间蜱)。
我试图在另一台计算机相同的(包括建设项目),也是2.2 GHz和16 GB的RAM和Windows7。 该程序运行快一点,但是模式是一样的。 同样如此,当我运行从NetBeans中,但在外部终端(也窗口终端)的项目。 它适用于两个版本,调试和发行版本。

其中计算(不是最关键的时间)是一个快速傅立叶变换,并取决于FFTW( http://www.fftw.org/ )“libfftw3-3.dll”库。 内的NetBeans其位置是已知的,在Windows命令提示,该DLL必须是在相同的目录中的可执行文件。

那么,究竟是一个程序运行如此之快在NetBeans的内部终端窗口不是在Windows命令提示符窗口?

难道有事情做在加载时库的动态链接?
然而,所述计算步骤中,实际上在窗户需要更长的时间命令比在NetBeans的终端不存在于DLL(2支COMLEX数的乘法)依赖于功能提示。

最耗时和在程序的关键计算是的类型的复数两个数组的乘法fftw_complex其是double[2]

for(int i = 0; i < n; ++i) {  

    double k1 = x[i][0] * (y[i][0] - y[i][1]);  
    double k2 = (y[i][1] * -1) * (x[i][0] + x[i][1]);  
    double k3 = y[i][0] * (x[i][1] - x[i][0]);  


    result[i][0] = k1 - k2;  
    result[i][1] = k1 + k3;  
}  

xy是复数的两个阵列,其中[i][0]保持实部和[i][1]保持虚部。 result是相同类型的预先分配的阵列。
当该程序在NetBeans的内部端子时,执行该循环花费长度513的阵列大约5微秒,而是100微秒当我运行在Windows命令提示程序。 我找不到在由sehe回答所有真正有用的建议作出解释。

请让我知道,如果你认为它是与实际的代码,然后我会提供一些。

我已经找了类似的问题,但找不到任何。 任何提示或指向其他问题,并且我可能会错过答案是赞赏。 干杯。

Answer 1:

按我的评论:

你做多少安慰IO? 微软控制台窗口是出了名的慢

也期待在环境变量,特别是:

  • 路径

    定义搜索路径。 搜索位置的顺序可能会影响加载时间 。 要真正得到正在做什么处理,考虑启用融合日志:

     Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion] "ForceLog"=dword:00000001 "LogFailures"=dword:00000001 "LogPath"="C:\\Temp\\Fusion" 

    (请参阅如何启用.NET程序集绑定失败日志记录(融合)重要提示)

    这将为您提供的地点进行了全面搜查什么的详细信息,以及在什么样的顺序。

  • LANG

    可能会覆盖系统区域(试着从你的代码中设置的语言环境C)

    对于后面的区域设置思维的说明,请参阅Unix的sort命令需要更长的时间取决于它执行的位置? (来自的ProcessBuilder最快在从IDE程序运行,从终端最慢)

    设置语言环境为C:

     std::locale::global(std::locale("")); 

    又见http://msdn.microsoft.com/en-us/library/9dzxxx2c(v=vs.80).aspx

  • HOME,TEMP

    可能影响的临时文件的位置



文章来源: Why does a project “run” faster in NetBeans internal terminal than in windows command prompt?