| #include <iostream>
|
| #include <chrono>
|
| #include "simdjson.h"
|
|
|
| int main()
|
| {
|
| // aliases
|
| using clock = std::chrono::high_resolution_clock;
|
| using ms = std::chrono::duration<double, std::milli>;
|
|
|
| // Ruta al archivo
|
| const char* JSON_PATH = R"(C:\Users\USER\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Shared Projects\JsonParserByLeo\Test\Ben\twitter.json)";
|
|
|
| // Inputs base
|
| constexpr int WARMUP = 20;
|
| constexpr int ITERS = 1000;
|
|
|
| // Cargar archivo
|
| simdjson::padded_string json;
|
| auto err = simdjson::padded_string::load(JSON_PATH).get(json);
|
| if (err) {
|
| std::cerr << "No se pudo abrir: " << JSON_PATH << "\n"
|
| << simdjson::error_message(err) << "\n";
|
| return 1;
|
| }
|
| std::cout << "Archivo: " << json.size() / 1024 << " KB\n";
|
|
|
| // Parser unico se reutiliza en cada iteracion
|
| simdjson::dom::parser parser;
|
|
|
| // Warm-up
|
| std::cout << "Warm-up (" << WARMUP << " iteraciones)...\n";
|
| for (int i = 0; i < WARMUP; ++i) {
|
| parser.parse(json);
|
| }
|
|
|
| // Benchmark
|
| std::cout << "Benchmark (" << ITERS << " iteraciones)...\n";
|
|
|
| auto t0 = clock::now();
|
|
|
| for (int i = 0; i < ITERS; ++i) {
|
| parser.parse(json);
|
| }
|
|
|
| auto t1 = clock::now();
|
|
|
| // Estadísticas
|
| double total_ms = ms(t1 - t0).count();
|
| double mean_ms = total_ms / ITERS;
|
| double file_mb = json.size() / (1024.0 * 1024.0);
|
| double mean_mb_s = file_mb / (mean_ms / 1000.0);
|
|
|
| std::cout << "\n────────────────────────────────────\n";
|
| std::cout << " Archivo : " << json.size() / 1024 << " KB\n";
|
| std::cout << " Iteraciones : " << ITERS << "\n";
|
| std::cout << " Total : " << total_ms << " ms\n";
|
| std::cout << " Media/iter : " << mean_ms << " ms\n";
|
| std::cout << " Throughput : " << mean_mb_s << " MB/s\n";
|
| std::cout << "────────────────────────────────────\n";
|
|
|
| std::this_thread::sleep_for(std::chrono::seconds(10));
|
|
|
| return 0;
|
| }
|
|
|
| /*
|
| Archivo: 616 KB
|
| Warm-up (20 iteraciones)...
|
| Benchmark (1000 iteraciones)...
|
|
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
| Archivo : 616 KB
|
| Iteraciones : 1000
|
| Total : 382.445 ms
|
| Media/iter : 0.382445 ms
|
| Throughput : 1574.76 MB/s
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
|
|
|
|
|
|
|
|
| Archivo: 616 KB
|
| Warm-up (20 iteraciones)...
|
| Benchmark (1000 iteraciones)...
|
|
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
| Archivo : 616 KB
|
| Iteraciones : 1000
|
| Total : 385.693 ms
|
| Media/iter : 0.385693 ms
|
| Throughput : 1561.5 MB/s
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
|
|
|
|
|
|
|
|
| Archivo: 616 KB
|
| Warm-up (20 iteraciones)...
|
| Benchmark (1000 iteraciones)...
|
|
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
| Archivo : 616 KB
|
| Iteraciones : 1000
|
| Total : 380.659 ms
|
| Media/iter : 0.380659 ms
|
| Throughput : 1582.15 MB/s
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
|
|
|
|
| Archivo: 616 KB
|
| Warm-up (20 iteraciones)...
|
| Benchmark (1000 iteraciones)...
|
|
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
| Archivo : 616 KB
|
| Iteraciones : 1000
|
| Total : 382.245 ms
|
| Media/iter : 0.382245 ms
|
| Throughput : 1575.59 MB/s
|
| ÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇÔöÇ
|
|
|
|
|
|
|
|
|
|
|
| */ |