草庐IT

PERFORMANCE

全部标签

c++ - c++内置函数的效率

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我是C++的新手,有更多的C经验。我正在编写一个将使用字符串类的程序,并开始怀疑“length()”方法的效率。虽然我意识到我对这个问题没有很好的答案,但我想知道这个问题和类似问题的答案是否存在于某个地方。虽然我完全有能力确定我自己的代码的运行时间,但当涉及到提供的代码时,我有点不知所措,因此我发现我无法准确判断我的程序的效率。是否有包含所提供代码运行时信息的c++文

c++ - 返回同时存在于列表 A 和列表 B 中的 x,y 坐标的最快方法是什么?

我有两个x,y坐标列表(列表A和列表B),其中0我一直在考虑将列表表示为两个位网格,并可能按位进行?列表A大约有1000个条目,并且可能每10,000个请求更改一次。列表B的长度会有很大差异,并且每次运行时都会有所不同。编辑:我应该提到没有坐标会出现在列表中两次;例如,1,1不能多次出现在列表A中。 最佳答案 如注释中所述,将(x,y)表示为单个24位数字。按数字顺序维护A(你说它变化不大,所以这应该几乎没有任何成本)。对每个B在列表中进行二分查找。由于A大约有1000个项目,因此您最多需要10次整数比较(在最坏的情况下)来检查成员

c++ - 快速时间函数 C/C++

我目前正在使用ctime库中的时间。有没有更快的选择?time_tstart_time,elapsed_time;for(inti=0;itime(NULL)还不够快。 最佳答案 您似乎只想测量耗时(而不关心绝对时间)。测量耗时的最快方法之一(如果您使用的是x86)是阅读rdtsccounter.在mvsc++中,这可以通过以下方式实现:#includeunsigned__int64rdtsc(void){return__rdtsc();} 关于c++-快速时间函数C/C++,我们在St

c++ - 对于非常接近 1 的基数,std::pow() 非常慢

我有一个求解方程f(x)=0的数字代码,其中我必须提高x的幂p。我用了一堆东西解决了它,但最后我有了牛顿法。解决方案恰好等于x=1,因此是我遇到问题的原因。当迭代解接近1时,比如x=1+1e-13,计算std::pow(x,p)以100倍的速度快速增长,使我的代码无法使用。运行这个东西的机器是CentOS上的AMD64(Opteron6172),命令很简单y=std::pow(x,p);。类似的行为出现在我所有的机器上,都是x64。如记录here,这不仅是我的问题(即,其他人也很生气),仅出现在x64上并且仅适用于接近1.0的x。exp也发生了类似的事情。解决这个问题对我来说至关重要。

c# - 比较运算符性能 <= 对 !=

让我们从声明代码可读性胜过微优化开始,我们宁愿将其留给编译器。这只是一个奇怪的案例,其中的细节似乎与一般建议相比很有趣因此搞乱了质数生成器函数,并提出了一个奇怪的行为,其中人们建议最有效的“!=”实际上是最不有效的,而“C#privatestaticvoidMain(string[]args){longtotalTicks=0;for(inti=0;i输出:在C++中类似(在不同的机器上)include#includeintmain(){for(size_ti(0);i输出:循环运行的次数相同。是否有任何优化?这不适用于!=还是一些奇怪的CPU行为? 最佳答

c++ - 构造函数会影响性能吗?

我的类有3个声明为公共(public)的成员变量,我最初可以在代码中的任何地方显式地使用它,但我仍然编写了带有初始值的构造函数,这个构造函数是否会影响性能开销?classABC{public:inta;intb;intc;ABC():a(0),b(0),c(0){}};请让我知道构造函数是否会增加性能开销? 最佳答案 初始化可能会产生少量成本。然而:如果编译器可以证明它们是不必要的,它可能能够消除初始化。即使成本很小,也很有可能与整个应用程序的上下文完全无关。您可以使用分析器来量化性能影响。它让您放心,因为知道这三个字段将始终被初始

c++ - unique_ptr vs 类实例作为成员变量

有一个类SomeClass,它包含一些数据和操作这些数据的方法。并且必须使用一些参数创建它,例如:SomeClass(intsome_val,floatanother_val);还有另一个类,比如Manager,它包括SomeClass,并大量使用它的方法。那么,在性能(数据局部性、缓存命中等)方面会更好,将SomeClass的对象声明为Manager的成员并使用成员初始化在Manager的构造函数中或将SomeClass的对象声明为unique_ptr?classManager{public:Manager():some(5,3.0f){}private:SomeClasssome;

c++ - 对于 C++ Vector3 实用程序类实现,数组是否比结构和类快?

出于好奇,我以3种方式实现了vector3实用程序:数组(使用typedef)、类和结构这是数组实现:typedeffloatnewVector3[3];namespacevec3{voidadd(constnewVector3&first,constnewVector3&second,newVector3&out_newVector3);voidsubtract(constnewVector3&first,constnewVector3&second,newVector3&out_newVector3);voiddot(constnewVector3&first,constnewVe

C++ 性能 std::array 与 std::vector

晚上好。我知道C风格数组或std::array并不比vector快。我一直使用vector(而且我用得很好)。但是,在某些情况下,使用std::array比使用std::vector性能更好,我不知道为什么(使用clang7.0和gcc8.2测试)。让我分享一个简单的代码:#include#include//somesizeconstantconstsize_tN=100;//somevectorsandarraysusingvec=std::vector;usingarr=std::array;//arraysareconstructedfasterhereduetoknownsiz

c++ - 如何判断 OpenMP 是否适用于我的 C++ 程序

我正在使用OpenMP对我的嵌套循环进行多线程处理。由于是新手,我不确定我是否以正确的方式使用OpenMP,以便它实际上可以进行并行编程。所以我想知道我是否可以测量使用OpenMP的C++程序的性能,以便我可以判断它是否确实有效并且我走在正确的轨道上?比如有多少线程并行运行,每个线程完成需要多长时间。谢谢和问候! 最佳答案 #include...inttarget_thread_num=4;omp_set_num_threads(target_thread_num);unsignedlongtimes[target_thread_n