![]() |
1
2
这是对算法基本速度的一个很好的度量,但找到总体性能取决于您如何使用某些东西。指令的数目也没有用。 例如,假设您有一些用C编写的func domath()和一些接受3-4个模板参数的模板domath调用。在一个简单的例子中,c函数通常会显示出更差的性能。然而,在一个大中型程序中,模板将增长到几十个或几百个,甚至数千个,而不仅仅是一个。这将阻塞指令缓存。同样的情况也适用于数据——一些树实现将具有更高的内存效率,而更臃肿的树实现将在简单的测试中表现更好,但在实际使用中,它们将表现得更差。 类似地,树在基本测试中似乎有性能,但随着时间的推移,它会将内存碎片化得如此之多,以至于性能会随着时间的推移而不断下降,直到您的程序几乎无法运行为止。 所以,性能总是取决于实际使用的东西,而不仅仅是它的实现。并不是说这总是一个折衷方案,有些实现比其他实现更好。不过,最终获得优异性能的唯一方法是深入了解计算机的工作原理和编译器的具体生成过程,否则对您来说永远是个谜。 这就是为什么人们建议剖析,但剖析只会告诉你这么多,基本上是指点方向。你会看到症状,但往往不是原因。这是因为性能是基于整个系统的,而不是简单地计算指令数。 |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 11 月前 |