当前位置: 首页 > 知识库问答 >
问题:

Optaplanner与Quarkus的基准测试

华永新
2023-03-14

我想用Quarkus Optaplanner应用程序进行高级基准测试。实施和运行它的最佳方式是什么?

当浏览Optaplanner的“旧”示例时,它们都实现了基准测试(在本视频中,有一个关于Optaplanner与Quarkus的演示,但基准测试是通过旧示例显示的)。我使用Quarkus构建了我的优化求解器,我想知道如何在这里实现基准测试。我的输入数据写在JSON文件中,我想尝试不同的求解器配置。

共有1个答案

裴欣荣
2023-03-14

这是缺少的功能,我们正在处理它,所以你可以直接删除一个benchmarkConfig。src/test/resources中的xml文件,可能没有任何entityClass etc信息,甚至根本没有配置xml文件,而且可以正常工作。

  • 吉拉票

我相信它会在8.5或8.6秒后着陆。

解决方法

同时,这也起到了作用:

// This needs to be in src/main/java, because src/test/java doesn't work
// TODO move this to src/test/java after https://issues.redhat.com/browse/PLANNER-2341
@QuarkusMain(name = "benchmark")
public class VaccinationScheduleBenchmark implements QuarkusApplication {

    public static void main(String[] args) {
        Quarkus.run(VaccinationScheduleBenchmark.class, args);
    }

    @Inject
    ObjectMapper objectMapper;

    @Override
    public int run(String... args) {
        generateDemoFile(5, 25, 0.0);
        generateDemoFile(10, 50, 0.0);
        generateDemoFile(10, 50, 0.3);
        generateDemoFile(25, 500, 0.0);
        generateDemoFile(50, 2000, 0.0);
        generateDemoFile(50, 2000, 0.3);
        // The solverBenchmarkConfig.xml explicitly mentions the entityClass, etc :(
        PlannerBenchmarkFactory benchmarkFactory = PlannerBenchmarkFactory.createFromXmlResource("solverBenchmarkConfig.xml");
        benchmarkFactory.buildPlannerBenchmark()
                .benchmarkAndShowReportInBrowser();
        return 0;
    }

    private void generateDemoFile(int vaccinationCenterCount, int totalBoothCount, double pinnedAppointmentRatio) {
        File file = new File("local/input/" + vaccinationCenterCount + "vc-" + totalBoothCount + "booths"
                + (pinnedAppointmentRatio > 0.0 ? "-" + pinnedAppointmentRatio + "pinned" : "") + ".json");
        if (!file.exists()) {
            DemoDataGenerator demoDataGenerator = new DemoDataGenerator(33.40, 34.10, -84.90, -83.90);
            VaccinationSchedule schedule = demoDataGenerator.generate(vaccinationCenterCount, totalBoothCount, pinnedAppointmentRatio);
            try {
                objectMapper.writeValue(file, schedule);
            } catch (IOException e) {
                throw new IllegalArgumentException("Failed writing file (" + file + ").", e);
            }
        }
    }

}
 类似资料:
  • 从 Go 1.7 开始,引入了一个新特性:子测试,又叫 命名测试(named tests),它意味着您现在可以拥有嵌套测试,这对于自定义(和过滤)给定测试的示例非常有用。 T 和 B 的 Run 方法允许定义子单元测试和子基准测试,而不必为每个子测试和子基准定义单独的函数。这使得可以使用 Table-Driven 的基准测试和创建层级测试。它还提供了一种共享通用 setup 和 tear-down

  • 11.4. 基准测试 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。 下面是IsPalindrome函数的基准测试,其中循

  • GoCPPLua (JIT) 策略执行的负载在model_b_test.go中进行基准测试。 测试是: 英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器 go test -bench= -benchmem 的测试结果如下 (op = 一次 Enforce() 调用, ms = 毫秒, KB = 千字节): 测试用例 规则大小 时间开销 (m

  • 我正在使用内置的 在编译到Quarkus本机应用程序之前,这一切都很好,现在我从Optaplanner枚举中得到了反射问题: 我可以通过在调用,但感觉这些反射注册不应该是手动步骤。目前我在,但我猜还有很多枚举要添加到这个列表中。。。真的应该这么复杂吗?我正在使用Quarkus Optaplanner依赖项

  • These benchmarks were designed to measure Javascript running time for Mithril in comparison with other popular Javascript MVC frameworks. Javascript running time is significant because the gzipped siz

  • https://github.com/17koa/koa-benchmark 比较koa和koa2和express性能 Prerequisites for OSX brew install wrk wrk原理 命令行操作 $ wrk -t8 -c1000 -d10 http://127.0.0.1:3000 Test 首次测试,需要安装依赖,会比较慢 make all 不安装依赖,重复测试