我的最终目标是使用标准Java集合作为基线,为几个Java原始集合库创建一套全面的基准.在过去,我使用了编写这些微基准的循环方法.我把我在基准测试中的函数放在循环中并迭代100万次以上,这样jit就有机会进行预热.我获取循环的总时间,然后除以迭代次数,以估计单次调用我正在进行基准测试的函数所花费的时间.在最近阅读了关于JMH项目,特别是这个例子之后:JMHSample_11_Loops我看到了这种方法的问题.
我的机器:
Windows 7 64-bit
Core i7-2760QM @ 2.40 GHz
8.00 GB Ram
jdk1.7.0_45 64-bit
Run Code Online (Sandbox Code Playgroud)
这是上面描述的循环方法代码的简单示例:
public static void main(String[] args) {
HashMap<Long, Long> hmap = new HashMap<Long, Long>();
long val = 0;
//populating the hashmap
for (long idx = 0; idx < 10000000; idx++) {
hmap.put(idx, idx);
}
Stopwatch s = Stopwatch.createStarted();
long x = 0;
for (long idx = 0; idx < 10000000; idx++) {
x = hmap.get(idx);
}
s.stop();
System.out.println(s); //5.522 s
System.out.println(x); …Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么C++编译需要这么长时间?
我正在处理两个大小相同(loc)的不同项目.使用Ant的Java构建过程以分钟为单位进行测量.使用CMAKE工具的C++构建处理以小时为单位进行测量.
Java的哪些特性允许它比同类C++程序更快地构建?
我试图在SQL(transact sql)中实现一个算法,并且鉴于我目前的能力,发现它很困难.我试图将问题排除在问题之外.这个算法背后的基本思想是用户计划一个月的预算.他们很清楚金钱来来往往多少钱.现在是月中.问题是:根据目前的义务,在本月剩余时间里,账户的最差位置是什么?
例如,看看下面的时间线吧
Today = 15th
Util = 17th
B-day = 19th
Cable = 22nd
Wages = 25th
Run Code Online (Sandbox Code Playgroud)
在17日,该帐户将比今天少150美元.在19号,帐户将比今天多100美元.在22日,该帐户将比今天少25美元.在25日,该帐户将比今天多975美元.
所以在这个例子中,查询将返回 - $ 150.
注意:我只关心返回的负值.如果它是否定的,则表示您有义务,不应该花费该金额.如果是积极的,那也没关系.您还不能在帐户中花钱.
| | |
| ^ ^ | ^ ^ |
| |Rent(-500) |Phone(-50) | |Util(-150) |Cable(-125) |
-----------------------------------------------------------------------------------
| ^ | ^ ^ |
| |Wages(+1000) | |B-day(+250) |Wages(+1000) |
| | |
Past Today Future
Run Code Online (Sandbox Code Playgroud)
我们可以用于此问题的简单表:
create table MoneyFlow
(
fiscalEventID int not null,
value money,
transactionDate date
)
Run Code Online (Sandbox Code Playgroud)
还有一种看待它的方法.你如何在SQL中执行以下算法?
Algorithm
Input: Start date, End …Run Code Online (Sandbox Code Playgroud)