github suprepupre/wow-optimize v2.4.0
v2.4.0 — Phase 2 Lua Fast Paths + QPC Cache

8 hours ago

wow_optimize v2.4.0

🆕 New Features

Phase 2: Runtime-Discovered Lua Fast Paths
The DLL now discovers C function addresses from Lua's global tables at runtime, calibrates the internal stack layout against a known reference (string.format), and installs optimized native replacements for 9 commonly called Lua library functions:

  • string.find (plain mode — skips pattern engine)
  • type() (direct type tag → string lookup)
  • math.floor, math.ceil, math.abs (direct FPU ops)
  • math.max, math.min (2-argument fast path)
  • string.len (direct length read)
  • string.byte (single-byte fast path)

All hooks validate arguments and fall back to the original Lua implementation for edge cases. Real-world logs show substantial call counts (type ≈ 172k, math ≈ 5k in one session).

QueryPerformanceCounter Coalescing Cache
QPC calls within a 50µs window return the cached result instead of making a kernel call. Real-world hit rates measured at 93–99.8% depending on system, significantly reducing syscall overhead on the main thread.

🔒 Stability

  • MPQ memory mapping disabled — caused crashes on HD/custom WoW clients. Code remains available for future test builds but is excluded from public releases.
  • GlobalAlloc fast path remains disabled — caused crash-on-login in earlier versions.
  • All other v2.3.0 optimizations retained and stable.

📋 Full Feature Set

Memory: mimalloc CRT + Lua VM allocator, string table pre-sizing, LFH, periodic purge
Lua: adaptive 4-tier GC, Phase 1 string.format + Phase 2 library fast paths, GC sync with LuaBoost
Timers: PreciseSleep, GetTickCount/timeGetTime→QPC, QPC cache, adaptive timer resolution, FPS cap 999
File I/O: MPQ tracking, read-ahead cache, sequential scan, FlushFileBuffers skip, GetFileAttributes cache
Threading: SRWLOCK cache, CriticalSection spin-first, TLS thread ID cache, priority tuning
Network: TCP_NODELAY, immediate ACK, QoS, buffer tuning, fast keepalive
Other: combat log optimizer, GetItemInfo cache, CompareStringA fast path, IsBadPtr fast path, periodic stats

📥 Installation

Copy version.dll + wow_optimize.dll into your WoW folder and launch normally.
Or use wow_loader.exe for injection-based loading.

Best used with !LuaBoost v1.9.2+.

Don't miss a new wow-optimize release

NewReleases is sending notifications on new releases.