// ny-array-bench - ArrayBox性能ベンチマーク // 目的: ArrayBox map/reduce、簡易可視化(VM/JIT整合優先の最小版) // 出力: JSON形式のベンチマーク結果(CI集計用) // 計測・集計は無効化(VM/JITで同一挙動を優先) static box Main { init { console } main(args) { me.console = new ConsoleBox() // ベンチマーク設定(ArrayBoxで明示作成) local sizes = new ArrayBox() sizes.push(1000) sizes.push(10000) sizes.push(100000) me.console.log("=== Nyash Array Benchmark ===") me.console.log("Backend: " + me.getBackend()) me.console.log("") // 各サイズでベンチマーク実行 local idx = 0 local n = sizes.length() loop(idx < n) { local size = sizes.get(idx) me.console.log("Testing size: " + size) me.benchArrayOps(size) idx = idx + 1 } // JSON結果出力(固定の空オブジェクト) local result = "{}" print(result) return 0 } getBackend() { // 実行環境の判定(簡易版: VM固定) return "vm" } benchArrayOps(size) { // VM/JIT 通過用の最小ダミー } // map実装(×クロージャ → ○固定処理: 2倍) mapArrayDouble(array) { local result = new ArrayBox() local length = array.length() local i = 0 loop(i < length) { local value = array.get(i) result.push(value * 2) i = i + 1 } return result } // reduce実装(総和) reduceArraySum(array) { local acc = 0 local length = array.length() local i = 0 loop(i < length) { acc = acc + array.get(i) i = i + 1 } return acc } // find実装(等値) findInArrayEq(array, target) { local length = array.length() local i = 0 loop(i < length) { local value = array.get(i) if value == target { return value } i = i + 1 } return null } calculateRelativePerformance() { // VMのみ記録(簡易) StatsBox.recordRelative("vm", 1.0) } }