perf(diarization): добавлен замер на старом Intel
- Зачем: - требовалось оценить стоимость опциональной диаризации на доступном слабом Intel baseline. - Что: - зафиксированы ASR, RTFx и peak RSS на трёх контрольных записях. - замер peak RSS адаптирован для Linux и macOS. - недоступный Core i5 явно заменён Core i7-6820HQ с сохранением ограничения применимости. - Проверка: - uv run ruff check .scratch/diarization/common.py. - uv run pytest -q: 243 passed, 1 skipped.
This commit is contained in:
@@ -61,4 +61,5 @@ uv run --with sherpa-onnx python .scratch/diarization/bench_conflict.py "<пут
|
||||
на слух — тикет #12, и он намеренно идёт до калибровки.
|
||||
- **Замер памяти чинился.** В разведке `psapi.GetProcessMemoryInfo` молча
|
||||
возвращал ноль; `common.peak_rss_mb()` теперь зовёт `K32GetProcessMemoryInfo`
|
||||
из kernel32 и проверяет код возврата.
|
||||
из kernel32 и проверяет код возврата. На Linux и macOS используется
|
||||
`resource.getrusage()` с поправкой на разные единицы измерения.
|
||||
|
||||
@@ -64,12 +64,22 @@ class _ProcessMemoryCounters(ctypes.Structure):
|
||||
def peak_rss_mb() -> float | None:
|
||||
"""Пиковая рабочая память процесса в МБ; None, если снять не удалось.
|
||||
|
||||
Два подвоха, на которых замер в разведке 2026-08-12 вернул ноль:
|
||||
На Linux ``ru_maxrss`` измеряется в КиБ, на macOS — в байтах. В Windows
|
||||
используются системные счётчики процесса.
|
||||
|
||||
Два подвоха, на которых замер в разведке 2026-08-12 вернул ноль в Windows:
|
||||
экспорт на современных Windows живёт в kernel32 как
|
||||
``K32GetProcessMemoryInfo``, а без явных ``restype``/``argtypes``
|
||||
псевдодескриптор процесса уезжает в вызов как 32-битное число и функция
|
||||
молча не срабатывает.
|
||||
"""
|
||||
if sys.platform != "win32":
|
||||
import resource
|
||||
|
||||
peak = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
|
||||
divisor = 1024 * 1024 if sys.platform == "darwin" else 1024
|
||||
return peak / divisor
|
||||
|
||||
kernel32 = ctypes.windll.kernel32
|
||||
kernel32.GetCurrentProcess.restype = ctypes.c_void_p
|
||||
handle = kernel32.GetCurrentProcess()
|
||||
|
||||
Reference in New Issue
Block a user