0c27ed89bc
JVM benchmark fixes: - signSchnorr(cached pk): document that native baseline still derives pubkey (apples-to-oranges by design — shows what caching enables) - privKeyTweakAdd: document .copyOf() penalty on native side (ACINQ wrapper mutates input, requiring defensive copy) - Remove duplicate tweakMulCompact test (redundant with ecdhXOnly) - Add cache-warming note to benchmark KDoc - Change output "slower" → neutral "x" (0.7x isn't "slower") Android benchmark fixes: - Remove misnamed pubKeyCompressOurs (was identical to compressedPubKeyForOurs) - Remove duplicate pubKeyCompress (was also doing create+compress) - Clean up structure: matched Native/Ours pairs with clear section headers - Add cache-warming note to benchmark KDoc - Standardize test data comment for cross-platform comparability K/Native benchmark fixes: - Fix DCE risk in micro-benchmarks: use result-dependent chains (out→out for field ops, xor hiSink for multiplyHigh) so LLVM can't hoist constant computations out of the loop - Add batch verify (was missing — JVM had it, Android/K/N didn't) - Add -opt documentation warning in KDoc - Remove unused pubkeyCreate/pubKeyCompress standalone benchmarks (compressedPubKeyFor already covers create+compress) - Extract printResults helper to reduce duplication All 3 benchmarks now: - Use the same test data (same hex keys across JVM/Android/K/N) - Measure the same core operations (verify, sign, compressedPubKeyFor, secKeyVerify, privKeyTweakAdd, ecdhXOnly/pubKeyTweakMulCompact) - Document cache-warming effects in their KDoc - Include batch verify (JVM + K/N; Android uses framework-managed tests) https://claude.ai/code/session_01EMY5RnXb9rnsyU2KbXrSaY