(argv)
| 49 | let blackhole = 0; |
| 50 | |
| 51 | function parseArgs(argv) { |
| 52 | const options = { |
| 53 | data: "", |
| 54 | serializer: "", |
| 55 | durationSeconds: DEFAULT_DURATION_SECONDS, |
| 56 | output: path.join(__dirname, "benchmark_results.json"), |
| 57 | }; |
| 58 | for (let i = 0; i < argv.length; i += 1) { |
| 59 | const arg = argv[i]; |
| 60 | switch (arg) { |
| 61 | case "--data": |
| 62 | options.data = String(argv[++i] || ""); |
| 63 | break; |
| 64 | case "--serializer": |
| 65 | options.serializer = String(argv[++i] || ""); |
| 66 | break; |
| 67 | case "--duration": |
| 68 | options.durationSeconds = Number(argv[++i] || DEFAULT_DURATION_SECONDS); |
| 69 | break; |
| 70 | case "--output": |
| 71 | case "--benchmark_out": |
| 72 | options.output = path.resolve(String(argv[++i] || options.output)); |
| 73 | break; |
| 74 | case "--help": |
| 75 | case "-h": |
| 76 | printUsage(); |
| 77 | process.exit(0); |
| 78 | break; |
| 79 | default: |
| 80 | throw new Error(`Unknown option: ${arg}`); |
| 81 | } |
| 82 | } |
| 83 | if (!Number.isFinite(options.durationSeconds) || options.durationSeconds <= 0) { |
| 84 | throw new Error(`duration must be a positive number, got ${options.durationSeconds}`); |
| 85 | } |
| 86 | if (options.data && !DATA_ORDER.includes(options.data.toLowerCase())) { |
| 87 | throw new Error(`Unknown data type: ${options.data}`); |
| 88 | } |
| 89 | if (options.serializer && !SERIALIZER_ORDER.includes(options.serializer.toLowerCase())) { |
| 90 | throw new Error(`Unknown serializer: ${options.serializer}`); |
| 91 | } |
| 92 | options.data = options.data.toLowerCase(); |
| 93 | options.serializer = options.serializer.toLowerCase(); |
| 94 | return options; |
| 95 | } |
| 96 | |
| 97 | function printUsage() { |
| 98 | console.log(`Usage: node benchmark.js [OPTIONS] |
no test coverage detected