summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-09-06 22:41:56 +0800
committerruki <[email protected]>2025-09-06 22:41:56 +0800
commitfc2b0dc9491ee838275c283b57fc316935471d4f (patch)
tree093993a44aba341cd44cca54aefaab45503b2355
parent8d003d54d21714a893990e640ab6d9e711a092a5 (diff)
add config targets benchmark
-rw-r--r--tests/benchmarks/config_targets/.gitignore8
-rw-r--r--tests/benchmarks/config_targets/CMakeLists.txt6
-rw-r--r--tests/benchmarks/config_targets/meson.build5
-rw-r--r--tests/benchmarks/config_targets/src/main.cpp6
-rw-r--r--tests/benchmarks/config_targets/test.lua28
-rw-r--r--tests/benchmarks/config_targets/xmake.lua7
6 files changed, 60 insertions, 0 deletions
diff --git a/tests/benchmarks/config_targets/.gitignore b/tests/benchmarks/config_targets/.gitignore
new file mode 100644
index 000000000..152105761
--- /dev/null
+++ b/tests/benchmarks/config_targets/.gitignore
@@ -0,0 +1,8 @@
+# Xmake cache
+.xmake/
+build/
+
+# MacOS Cache
+.DS_Store
+
+
diff --git a/tests/benchmarks/config_targets/CMakeLists.txt b/tests/benchmarks/config_targets/CMakeLists.txt
new file mode 100644
index 000000000..8a1c83c6d
--- /dev/null
+++ b/tests/benchmarks/config_targets/CMakeLists.txt
@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.10)
+project(test)
+
+foreach(i RANGE 1 1000)
+ add_executable(test${i} src/main.cpp)
+endforeach()
diff --git a/tests/benchmarks/config_targets/meson.build b/tests/benchmarks/config_targets/meson.build
new file mode 100644
index 000000000..d32292c79
--- /dev/null
+++ b/tests/benchmarks/config_targets/meson.build
@@ -0,0 +1,5 @@
+project('test', 'cpp')
+
+foreach i : range(1, 1001)
+ executable('test' + i.to_string(), 'src/main.cpp')
+endforeach
diff --git a/tests/benchmarks/config_targets/src/main.cpp b/tests/benchmarks/config_targets/src/main.cpp
new file mode 100644
index 000000000..7c775d288
--- /dev/null
+++ b/tests/benchmarks/config_targets/src/main.cpp
@@ -0,0 +1,6 @@
+#include <iostream>
+
+int main(int argc, char** argv) {
+ std::cout << "hello world!" << std::endl;
+ return 0;
+}
diff --git a/tests/benchmarks/config_targets/test.lua b/tests/benchmarks/config_targets/test.lua
new file mode 100644
index 000000000..66aec4ff1
--- /dev/null
+++ b/tests/benchmarks/config_targets/test.lua
@@ -0,0 +1,28 @@
+function test_config(t)
+
+ -- xmake
+ os.tryrm("build")
+ local dt1 = os.mclock()
+ os.runv(os.programfile(), {"config", "-c"})
+ dt1 = os.mclock() - dt1
+ print("config targets/1k: xmake: %d ms", dt1)
+
+ -- cmake
+ os.tryrm("build")
+ os.mkdir("build")
+ local dt2 = os.mclock()
+ os.runv("cmake", {"..", "-G", "Ninja"}, {curdir = "build"})
+ dt2 = os.mclock() - dt2
+ print("config targets/1k: cmake: %d ms", dt2)
+
+ -- meson
+ os.tryrm("build")
+ local dt3 = os.mclock()
+ os.runv("meson", {"setup", "build"})
+ dt3 = os.mclock() - dt3
+ print("config targets/1k: meson: %d ms", dt3)
+
+ t:require((dt2 > dt1) or (dt2 + 1000 > dt1))
+ t:require((dt3 > dt1) or (dt3 + 1000 > dt1))
+end
+
diff --git a/tests/benchmarks/config_targets/xmake.lua b/tests/benchmarks/config_targets/xmake.lua
new file mode 100644
index 000000000..39b394da3
--- /dev/null
+++ b/tests/benchmarks/config_targets/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.debug", "mode.release")
+
+for i = 1, 1000 do
+ target("test" .. i)
+ set_kind("binary")
+ add_files("src/main.cpp")
+end