2013-12-12 159 views
0

我想将时间戳以秒为单位转换为以毫秒为单位的时间戳。以下是我的天真做法。java将时间戳以秒为单位转换为以毫秒为单位的时间戳

if(timestamp < 10000000000) { 
    timestamp = timestamp * 1000L; 
} 

不幸的是,我必须把这个代码放在每分钟接收数千个请求的服务器上。所以,我想尽可能快地进行比较。

我有几个问题:

  1. 有多贵幼稚的做法?
  2. 有没有更快的方式来处理呢?
+4

您是否确定这实际上是相对于其他应用程序功能而言的性能瓶颈? –

+0

带有乘法和存储的'if'?我希望这是廉价和非常快。你有没有测量任何性能问题? –

+0

所有服务器都是获取请求并存储请求数据。我们相信我们的客户不会发送犯规数据。所以,目前,绝对没有数据处理正在进行。这是我们第一次在服务器中处理数据。 – riship89

回答

0

天真的方法有多贵?

条件大约需要1ns,而* 1000L大约需要3ns。所以总共大约4ns。 如果你每秒钟做2.5亿次,那么你有问题。几千秒,我不会担心。

有没有更快的方式来处理?

我相信这是您在性能方面出现的问题。我会用一个CPU来测量你的问题而不是猜测。

+0

我不同意你的数字......在我的旧Core i5上乘法的延迟是3个周期,这意味着大约1纳秒(同时仍然为ILP留出空间)。如果可以预测的话,条件几乎是免费的,否则它可能花费几个周期(Core i7上的17个周期,正如书面[这里])(http://www.programcreek.com/2012/12/amd-versus-intel-成功和他们的处理器架构陷阱2推土机和砂桥比较),即大约5纳秒。我同意你的结论。 – maaartinus

+0

当然。我会在我的代码中的适当位置放置一些秒表,并检查这会对每个请求花费多少时间。我想我应该做到这一点。我将在我的实验完成后发表评论。在此之前,我只会关闭这个问题。 – riship89

+0

@ riship89时间戳最多需要约35ns(约9倍的代码),因此测量它非常困难。 –

相关问题