Chr*_*rdt 1 php performance benchmarking getter-setter
我的问题是关于性能与设计.我在PHP中对Getter和Setter有很多了解.而背后的想法是非常好的和有用的(Debugging,Sanitize).
所以我开始做基准测试:
class Foo {
public $bar;
public function __construct($bar) {
$this->bar = $bar;
}
public function getBar() {
return $this->bar;
}
public function setBar($bar) {
$this->bar = $bar;
}
}
$foo = new Foo(42);
Debug::ProcessingTimeSinceLastCall();
//Without Setter and Getter
for ($i = 0; $i < 1000000; $i++) {
if ($foo->bar === 42) {
$foo->bar = 43;
} else {
$foo->bar = 42;
}
}
Debug::ProcessingTimeSinceLastCall('No Setter and Getter');
//With Getter and Setter
for ($i = 0; $i < 1000000; $i++) {
if ($foo->getBar() === 42) {
$foo->setBar(43);
} else {
$foo->setBar(42);
}
}
Debug::ProcessingTimeSinceLastCall('With Setter and Getter');
Run Code Online (Sandbox Code Playgroud)
结果:
0.0000 Seconds (First call)
0.1428 Seconds (No Setter and Getter)
0.4366 Seconds (With Setter and Getter)
Run Code Online (Sandbox Code Playgroud)
Setter和Getter需要3倍的时间.我的Benchmark错了吗?
我正在开发一个大型应用程序,有数千个这样的调用.如果表现很重要,那么拥有吸气剂和制定者仍然是一个好习惯吗?
面对从数据库中提取数据并通过网络发回响应,数以千计的调用可能无关紧要.
你谈到"成千上万的电话".你的代码可以对setter/getters进行一百万次调用,并且只能减慢0.29秒.你有没有进行数百万次调用的代码,并且有一个运行时间,你可以注意到0.29秒的差异?
在进行优化之前,找出代码中的慢点在哪里使用像XDebug这样的代码分析器:http: //xdebug.org
| 归档时间: |
|
| 查看次数: |
1074 次 |
| 最近记录: |