小编nok*_*kul的帖子

我怎样才能确定编译器不会优化我的性能测试?

我有一个类,它做了一些耗时的计算.我正在尝试对它进行性能测试:

int numValues = 1000000;
Random random = new Random();
startMeasuringTime();
double result;
for (int i = 0; i < numValues; i++) {
    result = calculatorInstance.doSomeTimeConsumingCalculationsOn(random.nextDouble());
}
stopMeasuringTime();
Run Code Online (Sandbox Code Playgroud)

我正在使用随机值,因此编译器不会将计算优化为相同的百万倍.但结果怎么样?编译器是否看到它不再被使用并且省略了调用(但是,它可以看到方法调用可能产生的任何副作用吗?)

我不想把结果放在某个地方(放入文件,数组或System.out),因为我认为这会减慢我不想测量的工作的速度.或者产生OutOfMemoryError.

提前致谢.

编辑:改变了标题

java testing performance

8
推荐指数
1
解决办法
469
查看次数

Swing:GlassPane可防止鼠标指针发生变化

我有一个带有一些标签的JTabbedPane,标签旁边还有很多未使用的额外空间.所以我正在尝试使用它并在那里放置一些按钮(就像在Eclipse中一样).我把按钮放在GlassPane上:

        JPanel glasspane = getPanelWithButtons();
        // panel with FlowLayout.RIGHT
        frame.setGlassPane(glasspane);
        glasspane.setOpaque(false);
        glasspane.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

这是有效的,我仍然可以点击我的gui的其他元素(我发现的大多数搜索结果都是关于如何防止这种情况).到目前为止唯一的问题是当鼠标指针悬停在JSplitPane的条形图上时,鼠标指针不会更改为该双端水平箭头.我怎样才能恢复这种行为?

编辑

我发现没有显示玻璃窗格下任何组件的鼠标更改事件.这些组件会将鼠标光标更改为手形光标,变焦镜头等.这些鼠标指针更改都不会产生任何影响.我想这是因为在玻璃窗格中,需要对玻璃窗格进行鼠标指针更改,但我不想手动更改所有鼠标指针.

java mouse swing pointers glasspane

3
推荐指数
1
解决办法
851
查看次数

标签 统计

java ×2

glasspane ×1

mouse ×1

performance ×1

pointers ×1

swing ×1

testing ×1