我正在尝试找到一种方法来测试运行一段C++代码需要多长时间。我用它来比较不同算法和不同语言下的代码,所以理想情况下我想要以秒/毫秒为单位的时间。在Java中,我使用的是这样的东西:longstartTime=System.currentTimeMillis();function();longstopTime=System.currentTimeMillis();longelapsedTime=stopTime-startTime;有没有像C++那样获得准确时间的好方法(或者我应该使用其他基准测试方法)? 最佳答案 使用您平台上可用的
我试图使插入到mysql的速度更快,所以我写了一个带有批量插入的代码。问题是,当我运行以下代码时,两种方法的结果相同(耗时:2分钟或173秒)。欢迎就此事发表任何评论。MySQLConnmysqlconn=newMySQLConn(db,username,pass);Connectionconn=mysqlconn.getConnection();PreparedStatementps=null;Stringquery="insertintotable(column)values(?)";System.out.println("bulkinsertstartedwith"+10000)
我今天遇到了这个问题,我不明白为什么groovyarray在变大时不能比Map更好地缩放。在我的示例中,我创建了一个映射(LinkedHashMap)和一个字符串数组(String[])。然后我从0迭代到10^7,将i插入到Map或Array中。我做了10次以确保异常值不会弄乱结果。intmax=10**7intnumTests=10longtotalTimeMap=0longtotalTimeArray=0numTests.times{longstart=System.currentTimeMillis()Mapm=[:]max.times{m[it]="${it}"}longend
我在Java中使用System.currentTimeMillis()(它返回一个long整数)为数据库实体生成唯一ID,因为我认为这是不可能的让这些时间在任何时候重叠。这是一个安全的假设吗?例如,目前我得到这个:1296691225227 最佳答案 不,这不安全。毫秒在CPU周期中是一个很长的时间(它们以每秒数十亿个周期而不是数千个周期运行),因此如果一次有多个请求或者多个线程都尝试创建数据库条目,它们将看到相同的CPU时间和将以碰撞键结束。如果系统时钟以某种方式重置或更改为更早的时间,您也会遇到麻烦。
我目前有以下代码:publicstaticintcurrentTimeMillis(){longmillisLong=System.currentTimeMillis();while(millisLong>Integer.MAX_VALUE){millisLong-=Integer.MAX_VALUE;}return(int)millisLong;}它以int格式返回当前时间(不完全是,但可以用于时差)。出于非常充分的理由,我不能使用long。是的,我只是对两个调用之间的区别感兴趣,而且这种方法很有效。但它只是看起来不对。我知道。而且效率低下。我知道。所以我的问题是,我该如何改进它?我
出于某些测试目的,我想准确预测System.currentTimeMillis()将返回什么。有什么方法可以卡住或手动设置调用System.currentTimeMillis()时返回的内容? 最佳答案 我强烈建议您避免在通用代码中使用System.currentTimeMillis(和newDate()等)。相反,创建一个表示“为您提供当前时间的服务”的Clock接口(interface),然后创建一个确实使用System.currentTimeMillis或其他任何内容,以及您可以显式控制的伪造实现。使用依赖注入(inject)
我做了一个小程序来测试System.currentTimeMillis()。我有一个奇怪的结果。这是我的日志:126-12-0920:48:21-[Log]lTime=1261860501009226-12-0920:48:21-[Log]lTime=1261860501012326-12-0920:48:21-[Log]lTime=1261864899078426-12-0920:48:21-[Log]lTime=1261860501033526-12-0920:48:21-[Log]lTime=1261860501069可以看到,第3行有问题,时间millis不对。它应该在1261
我有很多词需要处理,所有词都以.结尾,哪个选项的时间复杂度最高?word.substring(0,word.length()-1)word.replaceAll("\\.","")word.replace(".","")或者,有没有更好的办法? 最佳答案 一个简单的测试(使用JDK1.7.0_75)可以看出区别:privatestaticfinalintLENGTH=10000;publicstaticvoidmain(String[]args){String[]strings=newString[LENGTH];for(int
我希望通过多次调用返回时间戳的函数来获得微小的性能提升。该函数如下所示:publicstaticlongget_now_ms(){//returnsnumberofMILLISECONDSsinceepochjava.util.Dated=newjava.util.Date();returnd.getTime();}我可以将其替换为:publicstaticlongget_now_ms(){//returnsnumberofMILLISECONDSsinceepochreturnSystem.currentTimeMillis();}我知道Date在内部使用System.current
我需要在Java中生成一个唯一的10位ID。这些是此ID的限制:仅限数字最多10位数字每秒最多可以创建10个不同的ID必须是唯一的(即使应用程序重新启动)无法在数据库中保存号码尽可能快,不要给系统增加太多延迟目前我找到的最佳解决方案如下:privatestaticintinc=0;privatestaticlonggetId(){longid=Long.parseLong(String.valueOf(System.currentTimeMillis()).substring(1,10).concat(String.valueOf(inc)));inc=(inc+1)%10;retur