Tags: hyperized/benchmark
Tags
Tune/cycle counts & refresh UI (#37) * Tune cycle counts to reduce total benchmark time from ~19s to ~6s Lower defaults for JSON (9999→1000), Hashing (99999→9999), and Serialization (9999→2000) to keep each module under ~2s while still producing meaningful timings. * Redesign HTML dashboard with dark theme and polished styling Dark navy background, cyan accents, green monospace values, hover effects on cards/rows/badges, refined typography with JetBrains Mono, and subtle header glow line.
Refactor for PHP 8.4 and above (#36) * Add dev tooling and update dependencies for PHP 8.4+ Upgrade to PHP-DI 7, Symfony 7, adbario 3. Add PHPStan (level 8), PHP-CS-Fixer (PER-CS2.0), and GitHub Actions CI workflow. * Modernize core utilities and config for PHP 8.4+ Typed properties, constructor promotion, strict_types, readonly. Replace opendir/readdir with RecursiveDirectoryIterator. Update Symfony 7 FileLoader signatures. Remove Table and Visual classes. * Add Result DTOs for benchmark data Readonly DTOs implementing JsonSerializable for PHP, CPU, Disk, MySQL, and aggregate BenchmarkResult. * Refactor modules to return typed Result objects Modules no longer render output. Each implements BenchmarkModuleInterface with isEnabled() and a typed run() method. Add OutputMode enum for CLI/HTML detection. * Add CLI and HTML renderers CliRenderer with ANSI colors and Unicode box-drawing tables. HtmlRenderer with standalone styled HTML dashboard and responsive CSS grid layout. * Add JSON report system Save timestamped JSON reports to reports/ on each benchmark run. * Rewrite orchestrator and entry point Benchmark.php orchestrates modules, builds results, saves reports, and dispatches to the appropriate renderer. Auto-detects output mode from SAPI with config override support. * Update README for new architecture Document output modes, report system, and configuration options. * Fix Disk I/O card not spanning full width in HTML output * Add Memory benchmark module Tests allocation speed for array fill, array sort, string concat, object creation, array map, and array merge. Reports both execution time and peak memory usage per operation. * Fix memory benchmark reporting 0 bytes for most operations Use memory_reset_peak_usage() and memory_get_peak_usage() instead of memory_get_usage(true) which reports OS-level allocations in large chunks and misses reused memory. * Add Result DTOs for Network, JSON, Regex, and File Read modules * Add Network, JSON, Regex, and File Read benchmark modules Network: DNS resolution and TCP connection latency to configurable hosts. JSON: encode/decode across small, medium, and large payloads. Regex: match and replace across 10 pattern types. File Read: sequential reads across 1KB to 4MB file sizes. * Add rendering for new modules and switch all timings to milliseconds * Wire new modules into orchestrator and config * Add Result DTOs for Serialization, Hashing, Encryption, Function Overhead, Type Casting, Autoloading, and Compression * Add Serialization, Hashing, Encryption, Function Overhead, Type Casting, Object Instantiation, and Compression modules Serialization: serialize vs json_encode vs var_export, with igbinary/msgpack if available. Hashing: md5, sha1, sha256, sha512, xxh3, crc32, hmac-sha256, bcrypt, argon2id. Encryption: AES-128/256-CBC/GCM, ChaCha20-Poly1305 encrypt and decrypt. Function Overhead: named function, closure, first-class callable, static/instance method, arrow function. Type Casting: int/string/float/bool conversions and intval(). Object Instantiation: stdClass, DateTime, DateTimeImmutable, SplStack, SplPriorityQueue, ArrayObject. Compression: gzip, zlib, deflate with brotli/lzf if available. Reports time and compression ratio. Also reduces network connection timeout from 5s to 2s. * Add rendering for new benchmark modules in CLI and HTML * Wire new modules into orchestrator and config * Update README with full module list, example output, and config reference * Add CLI progress indicator during benchmark execution Shows [1/15] Running Module... on a single updating line so the user knows work is in progress. Clears the line before rendering results. Only displayed in CLI mode. * Add color to CLI progress indicator