php - PHP strtotime() 的性能如何?

标签 php datetime strtotime date-range

我正在做一些大的时间戳列表迭代:将它们放入 tables with date-ranges ,并按范围对它们进行分组。
为了做到这一点,我找到了 strtotime()一个非常有用的功能,但我担心它的性能 .

例如,一个循环一周列表的函数(例如,第 49 周到第 5 周)并且必须决定一周的开始和一周结束的时间戳。一个有用的方法是:

foreach ($this->weeks($first, $amount) as $starts_at) {
  $ends_at = strtotime('+1 week', $starts_at);
  $groups[$week_key] = $this->slice($timestamps, $starts_at, $ends_at);
}

//$this->weeks returns a list of timestamps at which each week starts.
//$this->slice is a simple helper that returns only the timestamps within a range, from a list of timestamps. 

而不是 strtotime() ,我可能会找出一周开始和结束之间的秒数,99% 的时间是 24 * 60 * 60 * 7 .但是在这些有 DST 开关的罕见情况下,24 应该是 23 或 25。解决这个问题的代码可能会比 strtotime() 慢很多。 , 不是?

我在年、月(月,非常不一致!)、天和小时的范围内使用相同的模式。只有几个小时,我才会怀疑只是添加 3600到时间戳更快。

还有其他问题吗?有没有办法(不依赖于 PHP5.3!)为一致的、DST 和闰年安全日期范围提供更好的路线?

最佳答案

你为什么担心它的性能?您是否有证据表明它会减慢您的系统速度?如果没有,不要因为不必要的原因试图使解决方案过于复杂。请记住 premature optimization is the root of all evil .编写有意义的可读代码,并且只有在您知道这将是一个问题时才进行优化......

但要考虑的另一件事是它也是编译的 C 代码,因此它的功能应该非常有效。您可能能够在 PHP 领域构建代码的子集并使其更快,但这将是一项艰巨的工作(由于 PHP 代码中涉及的所有开销)。

就像我之前说的,使用它直到你证明这是一个问题,然后解决这个问题。不要忘记根据您的需要重新编写它也不是免费的。这需要时间并引入错误。如果增益很小(意味着它不是性能问题),是否值得?所以不要费心去尝试微优化,除非你知道这是一个问题......

关于php - PHP strtotime() 的性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907524/

相关文章:

javascript - 浏览器解析日期的方式不同

python - 如何获取上周三的 Python 日期对象

php - strtotime php 函数在 php 文件中输出正确时间但在 MySQL 中更新后输出错误

PHP strtotime 总是在午夜返回

php - Youtube API v3-检索 channel 名称

php - MySQL错误处理/ try catch

PHP curl 脚本未关闭连接

java - Java 或 Joda 中的十进制日期时间格式化程序

当前时间戳的 Php 和 Mysql 日期(以秒为单位)不同

PHP fatal error 。 empty() 是否试图改变传递给它的结果?