|
|
1
20
您的性能问题可能更多地与您实现的算法有关,而不是与您使用的操作有关。 发布代码可能很有用。告诉我们你想做什么,你使用的算法也会有帮助。事实上,你的问题没有提供足够的信息给任何人给你一个有用的答案。 其他人建议gprof-i其次,如果您对分析代码感兴趣的话。我以前也用过vtune,并且喜欢它。但是首先要确保您理解您的代码及其功能,并且在处理您期望它处理的数据量时,您正在实现的算法是高效的。 另外,使用C并不意味着代码会自动运行得更快。I/O绑定的代码通常不会看到性能改进。使用低级语言可能对UI重代码没有好处。通常,C是一种更好的实现语言,在这种语言中,当您与硬件或低级操作系统服务接口时,或者如果您有非常具体和严格的性能要求,在高级垃圾收集语言中很难满足这些要求时,您需要低级访问。或者如果你碰巧喜欢C,但这显然是一个主观的问题。 |
|
|
2
3
这是一个老生常谈的话题。 分析是一种选择,但是如果您有一个调试器,那么有两种老式的技术可以非常好地工作:
不要像大多数人那样做。大多数人做的是1)勇敢地谈论分析,然后2)猜猜问题是什么,然后解决问题。如果你在四处寻找“快速行动”,你就错过了要点。除非你通过上面的一项调查来证明这是什么,否则你永远不会解决正确的事情。 |
|
|
3
2
不要浪费时间去寻找“昂贵”的业务。当然,除了图书馆,C语言中几乎没有。 相反,尝试估计代码的每个部分执行的次数。例如,假设您正在将文件的每一行与另一行的每一行进行比较。如果每个文件有大约百分之一行,您将进行大约一万次比较。没什么好担心的…但是,如果您从文件的开头开始选择每一行,您将读取每一行50万次。现在不行了。你需要一些真正随机的访问方式来读取每一行…或者,更好的是,阅读关于散列的内容
在“大O”符号中:全集比较是
优化算法,而不是代码。 |
|
|
4
1
检查内存分配。和函数调用。如果您使用gcc,请使用-pg选项编译它,并运行它 gprof . vs团队系统版本自带一个分析器。所以,选你的吧。 |
|
|
5
1
不可能知道。您所命名的元素都不是很慢,即使它们很慢,也不会自动意味着整个程序会因为它们而变慢。 您最好在启用分析的情况下运行您的代码,并查看哪些部分成本最高。(这取决于你的平台,你会怎么做)。 有关MSVC的信息,请参阅 this post 或 this blog entry about profiling under MSVS 甚至 this question, and particularly the AMD CodeAnalyst answer |
|
|
6
0
您可以访问GNU工具链吗?如果是,请查看“gprof”。它是一个剖析者…有助于发现瓶颈。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 10 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 11 月前 |
|
|
Bobby · 复合字面值总是左值吗? 11 月前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 11 月前 |