java将以秒为单位的时间戳转换为以毫秒为单位的时间戳

java将以秒为单位的时间戳转换为以毫秒为单位的时间戳,java,performance,Java,Performance,我想把以秒为单位的时间戳转换成以毫秒为单位的时间戳。以下是我天真的做法 if( timestamp < 10000000000 ) { timestamp = timestamp * 1000L; } 不幸的是,我不得不将此代码放在每分钟接收数千个请求的服务器中。所以,我想尽快进行比较 我有几个问题: 这种幼稚的做法代价有多大? 有没有更快的处理方法? 这种幼稚的做法代价有多大 这种情况大约需要1纳秒,*1000L大约需要3纳秒。总共大约4纳秒。 如果你每秒这样做2.5亿次,你就

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

if( timestamp < 10000000000 ) {
    timestamp = timestamp * 1000L;
}
不幸的是,我不得不将此代码放在每分钟接收数千个请求的服务器中。所以,我想尽快进行比较

我有几个问题:

这种幼稚的做法代价有多大? 有没有更快的处理方法? 这种幼稚的做法代价有多大

这种情况大约需要1纳秒,*1000L大约需要3纳秒。总共大约4纳秒。 如果你每秒这样做2.5亿次,你就有问题了。我不会担心每秒几千次

有没有更快的处理方法


我相信这是你在表现方面的问题的根源。我会使用CPU来测量你的问题所在,而不是猜测。

你确定这实际上是相对于应用程序其他功能的性能瓶颈吗?一个带乘法和存储的if?我希望这样做既便宜又快捷。您测量过任何性能问题吗?服务器所做的只是获取请求并存储请求数据。我们相信我们的客户不会发送错误数据。因此,目前,绝对没有进行数据处理。这是我们第一次在服务器中处理数据。对于您的if语句,它是否可能已经是毫秒?如果不需要,则不需要If语句,如果可以,那么如果以毫秒为单位的时间戳合法地低于10000000000呢?不要数零。@DoubleDouble:可能已经是毫秒了。我不同意你的数字。。。在我的旧内核i5上,乘法的延迟是3个周期,这意味着大约1ns,同时仍然为ILP留出空间。如果可以预测,则该条件几乎是免费的,否则它可能会花费数个周期,即大约5ns,如所述,在核心i7上花费17个周期。我同意你的结论。当然。我将在代码中的适当位置放置一些秒表,并检查这对每个请求花费的时间有多大影响。我想我以前应该这样做的。我将在实验完成后发表评论。在那之前,我将结束这个问题。@riship89时间戳最多需要35纳秒,大约是代码的9倍,因此测量非常困难。然后我必须用秒表包装秒表。开端只是开玩笑。我说的是API响应200的日志记录时间。如果我记录n个并发请求的时间戳转换操作和非时间戳转换操作,我将得到一些数字。