我运行示例 JHM 基准测试,它应该显示死代码消除。为了简洁起见,代码是从jhm github 示例重写的。
\nimport org.openjdk.jmh.annotations.*;\nimport java.util.concurrent.TimeUnit;\n\n@State(Scope.Thread)\n@BenchmarkMode(Mode.AverageTime)\n@OutputTimeUnit(TimeUnit.NANOSECONDS)\n@Fork(1)\npublic class Sample08DeadCode {\n\n private double x = Math.PI;\n\n @Benchmark\n public void benchmark() {}\n\n @Benchmark\n public void measureIncorrect() { Math.log(x); }\n\n @Benchmark\n public double measureCorrect() { return Math.log(x); }\n}\nRun Code Online (Sandbox Code Playgroud)\n使用 JDK 1.8.0_211、Java HotSpot(TM) 64 位服务器 VM 25.211-b12 运行会产生以下结果:
\nBenchmark Mode Cnt Score Error Units\nSample08DeadCode.benchmark avgt 5 0,229 \xc2\xb1 0,018 ns/op\nSample08DeadCode.measureCorrect avgt 5 12,013 \xc2\xb1 0,047 ns/op\nSample08DeadCode.measureIncorrect avgt 5 0,228 \xc2\xb1 0,016 ns/op\nRun Code Online (Sandbox Code Playgroud)\n但使用 java JDK 17.0.2、Java HotSpot(TM) …
假设我有一些 TextField 放置在窗格布局结构的深处。我想添加侦听器或以某种方式识别 TextField 更改了其在场景中的位置 (x, y)。问题是 - 我怎样才能以正确的、可重用的方式实现它?
我提供一些测试代码。要重新创建,请拖动舞台边框,这将导致 TextField 位置发生变化。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class App extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
TextField textField = new TextField();
Button button = new Button("Button");
HBox hBox = new HBox(textField, button);
hBox.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
StackPane stackPane = new StackPane(hBox);
stackPane.setPrefSize(600., 400.);
Scene scene = new Scene(stackPane); …Run Code Online (Sandbox Code Playgroud)