Is there are flag in gcc compiler for pthread code to minimize execution time?
我正在用 C 语言编写 pthread 代码,并使用 gcc 编译器。我已经用 pthread_condition、互斥锁和信号量实现了一个代码。gcc 中是否有任何标志或选项来提高执行时间?
编写程序来解决这个问题
- 谁能回复我??为什么要对这个问题投反对票?
gcc 手册页显示:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
–O
–O1 Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function. With –O, the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time. –O2 Optimize even more. GCC performs nearly all supported optimizations that do not involve a space–speed tradeoff. As compared to –O, this option increases both compilation time and the performance of the generated code. –O3 Optimize yet more. –O3 turns on all optimizations specified by –O2 and also turns on the –finline–functions, –funswitch–loops, –fpredictive–commoning, –fgcse–after–reload, –ftree–vectorize and –fipa–cp–clone options. |
所以如果你想让你的代码运行得更快(“最小化执行时间”),一个好的开始是使用 -O3.
由于优化将是通用的,因此您必须进行大量基准测试才能获得给定代码的最佳结果。
- 谢谢@uml?ute 是否有任何特定于多线程的标志?无论如何我正在使用 -g -D_FILE_OFFSET_BITS=64 -Wall -O2 -finline-functions?正如我猜测的那样,线程必须有任何特殊标志?
- @Vishwadeep,您为什么不能自己阅读精彩的手册?在 x86 上,您必须使用 -pthread 来编译和链接多线程程序,但没有单独的优化选项。慢速多线程应用程序通常是由于对同步和缓存效果(例如错误共享)的选择不当,而不是由于编译器优化
- 谢谢@JonathanWakely,我阅读了它,并且 -lpthread 和rest标志(我在之前的评论中提到过)已经在使用它们。但我问了一个问题,因为有人知道超出我理解范围或愿意分享知识的任何额外选项。
- 完全正确..像互斥锁和pthread条件是要优化的一大块代码……因此我开始以这种方式思考使用优化标志..
- @Vishwadeep:请注意 -lpthread 和 -pthread 之间的区别。进一步阅读:stackoverflow.com/q/2127797/694576
来源:https://www.codenong.com/18870139/