gpt4 book ai didi

PHP Getter 和 Setter 性能。性能在这里很重要吗?

转载 作者:行者123 更新时间:2023-12-01 22:35:50 24 4
gpt4 key购买 nike

我的问题是关于性能与设计。我已经阅读了很多关于 PHP 中的 Getter 和 Setter 的内容。背后的想法非常好而且很有用(调试、 sanitizer )。

于是我开始做一个Benchmark:

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');

结果:

0.0000 Seconds (First call)
0.1428 Seconds (No Setter and Getter)
0.4366 Seconds (With Setter and Getter)

Setter 和 Getter 需要 3 倍的时间。我的基准有误吗?

我正在开发一个大型应用程序,其中有数千个这样的调用。如果性能很重要,使用 getter 和 setter 仍然是一个好习惯吗?

最佳答案

面对从数据库中获取数据并通过网络发回响应的过程,数以千计的调用可能无关紧要。

你说的是“千呼万唤始出来”。您的代码可以对 setter/getter 进行一百万次调用,并且只会减慢 0.29 秒。您是否拥有可以进行数百万次调用的代码,并且其运行时间可以让您注意到 0.29 秒的差异?

在开始优化之前,使用 XDebug 等代码分析器找出代码中的慢点在哪里:http://xdebug.org

关于PHP Getter 和 Setter 性能。性能在这里很重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com