【问题标题】:Fastest way to convert a UNIX timestamp转换 UNIX 时间戳的最快方法
【发布时间】:2011-04-25 09:50:08
【问题描述】:

我编写了一个小脚本来计算来自日志文件的访问次数。

   for($j=0; $j < $max; $j++) 
   {
   $tempyear = date('Y', $timestamp[$j]);
   $tempday = date('z', $timestamp[$j]);
   for($i=$fromdate; $i <= $todate; $i++)
      {
      if ($tempyear === $yeartoday) {
      if ($tempday == $i) {$dayaccesses[$i] = $dayaccesses[$i]+1;}}
      }
   }

我注意到由于 UNIX 时间戳的转换,执行速度非常慢。

例如,如果我以纯文本格式保存年份和日期,则脚本的执行速度会快得多...

对于 12.000 个条目 [以秒为单位(不是前面所说的微秒)]
纯文本日期:0,14
时间戳转换:0,58

那么有没有(希望是简单的)方法来加快时间戳转换?

【问题讨论】:

  • 一个人的“慢”是另一个人的“如此之快,除非你尝试,否则你永远不会注意到它”...跨度>
  • 无论如何,就微优化而言,您可以使用跳过时区转换的gmdate()。或者,如果您真的对此很着迷,请计算大约。约会自己$t_year = 1970 + time() / (60*60*24*30*12) 等等...
  • 尽管这是微优化,@mario 的评论让我想起了一个与date() 相关的性能问题,它确实显示了一些加速潜力:stackoverflow.com/questions/5556789 你可以尝试将时区设置为你的代码如图所示。

标签: php performance


【解决方案1】:

您显示的 0.445 微秒的差异是 0.000445 秒。

这不值得认真考虑。这个问题已经浪费了更多的时间,而不是优化所节省的时间。 :)

【讨论】:

  • 实际上,“微秒”是一个错字 - 我的意思是秒......所以 0.4 秒 - 我知道仍然不多 - 但值得注意......
  • @Nyoman 0,4 seconds 不同 - 在这种情况下,请尝试上面评论中的链接。但是你真的有每天需要在一个请求中进行 12,000 次转换的情况吗?也许您需要研究缓存以加快速度?
【解决方案2】:

相信very smart man的话:

我们应该忘记小的效率,比如大约 97% 的时间:过早的优化是万恶之源

“过早优化”是一个短语,用于描述程序员让性能考虑影响一段代码的设计的情况。这可能会导致设计不干净或代码不正确,因为代码因优化而变得复杂,而程序员因优化而分心。

引用自http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize

所以,正如 Pekka 已经说过的,当确实没有充分的理由进行优化时,不要进行优化。

【讨论】:

    猜你喜欢
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多