草庐IT

PERFORMANCE

全部标签

c++ - 当应用于原始类型时,通过引用调用 const 是否会提高性能?

关于对象(尤其是字符串),按引用调用比按值调用更快,因为函数调用不需要创建原始对象的拷贝。使用const,还可以确保引用不被滥用。我的问题是,如果使用bool、int或double等原始类型,const按引用调用是否也更快。voiddoSomething(conststring&strInput,unsignedintiMode);voiddoSomething(conststring&strInput,constunsignedint&iMode);我的怀疑是,一旦原始类型的字节大小超过地址值的大小,就使用按引用调用是有利的。即使差异很小,我也想利用,因为我经常调用其​​中一些函数。

c++ - 在 Windows 上用 C++ 计算 CPU 时间

在C++中是否有任何方法可以计算在CPU时间中运行给定程序或例程需要多长时间?我使用在Windows7上运行的VisualStudio2008。 最佳答案 如果你想知道一个进程使用的CPU时间总量,clock和rdtsc(直接或通过编译器内部)都不是最好的选择,至少是海事组织。如果你需要代码是可移植的,你能做的最好的事情就是使用clock,尽可能在系统静止的情况下进行测试,并希望得到最好的结果(但如果你这样做,请注意clock的分辨率是CLOCKS_PER_SEC,它可能是1000,也可能不是1000,即使是,您的实际计时分辨率通常

javascript - MMO WebSocket 服务器 : Node. js 或 C++?

我一直在考虑使用WebSockets为网络制作一个实时游戏。我知道如何使用Node.js,并且很想在其中使用它。但无论我在哪里看,C++似乎都是流行的服务器语言,因为它的速度。我应该尝试在Node.js中实现它,然后再担心C++,还是应该现在学习C++,然后从头开始实现它? 最佳答案 如果您决定采用C++路线(并且它确实提供了所有语言的最佳性能),那么这个出色的开源Websocket库可以为您完成所有繁重的工作。它仅包含标题,仅使用boost。它带有示例代码和文档:http://vinniefalco.github.io/这是一个向

c++ - XP : Is turning off "last access time" safe? 上的文件

我正在拼命寻找廉价的方法来缩短我家用PC上的构建时间。我刚读了一个articleaboutdisablingtheLastAccessTimeattributeWindowsXP上的文件,因此简单的读取不会将任何内容写回磁盘。It'sreallysimpletoo.AtaDOS-promptwrite:fsutilbehaviorsetdisablelastaccess1有没有人在构建C++项目的环境中尝试过它?有什么缺点吗?[编辑]有关主题的更多信息here. 最佳答案 来自SetFileTime'sdocumentation:“

c++ - std::vector 比普通数组快吗?

我刚刚尝试在std::vector>上对std::sort进行基准测试(填充了push_back操作)和普通的std::pair>*数组(使用new分配,然后一一填充)。compare函数只是比较了对的浮点部分。令人惊讶的是,当用于16M值时,在std::vector上只需要大约1940毫秒,但在数组上大约需要2190毫秒。谁能解释一下vector如何更快?是因为缓存,还是只是数组版本的std::sort实现不好?gcc(GCC)4.4.520110214(红帽4.4.5-6)Intel(R)Core(TM)i7CPU870@2.93GHz-缓存大小8192KB(计算机有两个四核CPU

c++ - 如何用 1 个非常大的数组快速初始化

我有一个巨大的数组:int*arr=newint[BIGNUMBER];如何用1个数字快速填充它。通常我会做for(inti=0;i但我认为这需要很长时间。我可以使用memcpy或类似的工具吗? 最佳答案 您可以尝试使用标准函数std::uninitialized_fill_n:#include//...std::uninitialized_fill_n(arr,BIGNUMBER,1);无论如何,当谈到性能时,规则是始终进行测量以支持您的假设-特别是如果您因为所谓的性能改进而打算放弃清晰、简单的设计而采用更复杂的设计.编辑:请注意

c++ - 如果我有固定数量的相互独立的计算,多线程是否会显着提高性能?

我正在编写光线转换游戏引擎。可以在不知道其他射线的情况下计算每条射线(我只计算距离)。由于计算之间没有等待时间,我想知道使光线计算多线程化是否值得。性能是否有可能提升? 最佳答案 如果处理得当,多线程很可能会提高性能。按照您陈述问题的方式,它是多线程的完美候选者,因为计算是独立的,从而将线程之间的协调需求降至最低。您仍然可能无法获得加速,或者可能无法获得预期的全部速度的一些原因可能包括:1)瓶颈可能不是片上CPU执行资源(例如,ALU绑定(bind)操作),而是一些共享的东西,例如内存或共享LLC带宽。例如,在某些架构上,单个线程可

c++ - 基于 boolean C++ 确定值的最快方法

如果你有一个booleanb和一个inti,这两个例子中哪个更好?intx=i-1;if(!b)x--;或intx;if(b)x=i-1;elsex=i-2;在这两个例子中,如果b为真,则x为i-1,否则x为i-2。您应该将x声明为i-1并在b为false时递减,还是应该使用第二个示例? 最佳答案 如果编译器没有将两个版本优化为相同的最佳程序集,我会感到惊讶。不要将时间浪费在这种微优化上,除非您可以使用分析器证明它们很重要。回答你的问题:这无关紧要。这是关于gcc.godbolt.org的“生成的程序集”比较使用-Ofast。vol

c++ - 'Natural Size' 在 C++ 中的真正含义是什么?

我知道“自然大小”是指特定硬件处理效率最高的整数宽度。在数组或算术运算中使用short时,必须先将short整数转换为int。问:究竟什么决定了这个“自然大小”?我不是在寻找简单的答案,例如Ifithasa32-bitarchitecture,it'snaturalsizeis32-bit我想了解为什么这是最有效的,以及为什么一个短必须在对其进行算术运算之前进行转换。奖励问题:对long整数进行算术运算时会发生什么情况? 最佳答案 一般来说,每个计算机体系结构的设计都使得特定类型大小提供最有效的数字运算。具体大小则取决于体系结构,编

c++ - 为什么指针更快更高效

我在Cbook中读到这篇文章:Pointershaveseveraluses,including:•Creatingfastandefficientcode•Providingaconvenientmeansforaddressingmanytypesofproblems•Supportingdynamicmemoryallocation•Makingexpressionscompactandsuccinct•Providingtheabilitytopassdatastructuresbypointerwithoutincurringalargeoverhead•Protecting