MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / print_statistics

Function print_statistics

scripts/osrm-runner.js:184–237  ·  view source on GitHub ↗
(results)

Source from the content-addressed store, hash-verified

182
183// Calculate and print query statistics
184function print_statistics(results) {
185 const total_queries = results.length;
186 const successful = results.filter(r => r.code === 200 && r.total > 0);
187 const successful_count = successful.length;
188 const failed_count = total_queries - successful_count;
189
190 process.stderr.write('\n=== Query Statistics ===\n');
191 process.stderr.write(`Total queries: ${total_queries}\n`);
192 process.stderr.write(`Successful: ${successful_count}\n`);
193 process.stderr.write(`Failed: ${failed_count}\n`);
194
195 if (successful_count === 0) {
196 // Show sample of error codes to help debug
197 const error_codes = {};
198 results.forEach(r => {
199 error_codes[r.code] = (error_codes[r.code] || 0) + 1;
200 });
201 process.stderr.write('\nError breakdown:\n');
202 Object.entries(error_codes).forEach(([code, count]) => {
203 process.stderr.write(` ${code}: ${count} queries\n`);
204 });
205 process.stderr.write('========================\n\n');
206 return;
207 }
208
209 // Extract total times from successful queries (filter out any 0 or invalid times)
210 const times = successful.map(r => r.total).filter(t => t > 0).sort((a, b) => a - b);
211
212 if (times.length === 0) {
213 process.stderr.write('No valid response times recorded\n');
214 process.stderr.write('========================\n\n');
215 return;
216 }
217
218 const min = times[0];
219 const max = times[times.length - 1];
220 const avg = times.reduce((sum, t) => sum + t, 0) / times.length;
221
222 // Calculate median
223 let median;
224 const mid = Math.floor(times.length / 2);
225 if (times.length % 2 === 0) {
226 median = (times[mid - 1] + times[mid]) / 2;
227 } else {
228 median = times[mid];
229 }
230
231 process.stderr.write(`\nResponse times (ms):\n`);
232 process.stderr.write(` Min: ${min.toFixed(2)}\n`);
233 process.stderr.write(` Max: ${max.toFixed(2)}\n`);
234 process.stderr.write(` Avg: ${avg.toFixed(2)}\n`);
235 process.stderr.write(` Median: ${median.toFixed(2)}\n`);
236 process.stderr.write('========================\n\n');
237}

Callers 1

osrm-runner.jsFile · 0.85

Calls 2

sortMethod · 0.80
writeMethod · 0.45

Tested by

no test coverage detected