优化原生结果编码传输与浏览器缓存,记录八路性能基线
原生结果series通过字节索引直传,C端使用Ryu精确回读编码和64 KiB批量写出;网页采用Float64缓存和CSV工作线程,减少结果处理与保存等待。 补充八路AME曲线核查、全流程分阶段计时、独立编码基准和复现工具,固定后续优化采用修正八路及rtol=1e-8。C写出1.1808→0.1638 s,点击到可查看8.0100→6.9756 s。 验证:最终10项编码专项、29项相关后端回归通过;8份原生结果逐位一致,16次网页结果/CSV/刷新恢复通过。前端构建及缓存/CSV专项在本轮结果处理工作中通过。环境、原始大结果与临时构建不纳入Git。
This commit is contained in:
1 parent
808c484f5b
commit
3bc4be3c06
55 files changed
+20522
-141
No files matched your search
@@ -2,7 +2,10 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Literal
|
||||
from typing import TYPE_CHECKING, Literal
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from app.simulation.native_codegen.transport import NativeSeriesJson
|
||||
from app.simulation.core.metadata import ResultVariableMetadata
|
||||
|
||||
SimulationRunStatus = Literal["completed", "cancelled", "failed"]
|
||||
@@ -30,11 +33,15 @@ class GenericSimulationResult:
|
||||
simulated_until: float
|
||||
requested_stop_time: float
|
||||
variables: tuple[ResultVariableMetadata, ...]
|
||||
series: dict[str, list[float]]
|
||||
series: dict[str, list[float]] | NativeSeriesJson
|
||||
final: dict[str, float]
|
||||
diagnostics: dict[str, object]
|
||||
|
||||
def as_dict(self) -> dict[str, object]:
|
||||
def as_dict(self, *, raw_series: bool = False) -> dict[str, object]:
|
||||
from app.simulation.native_codegen.transport import NativeSeriesJson
|
||||
series = self.series
|
||||
if isinstance(series, NativeSeriesJson) and not raw_series:
|
||||
series = series.materialize()
|
||||
return {
|
||||
"success": self.success,
|
||||
"status": self.status,
|
||||
@@ -43,7 +50,7 @@ class GenericSimulationResult:
|
||||
"simulatedUntil": self.simulated_until,
|
||||
"requestedStopTime": self.requested_stop_time,
|
||||
"variables": [variable.as_dict() for variable in self.variables],
|
||||
"series": self.series,
|
||||
"series": series,
|
||||
"final": self.final,
|
||||
"diagnostics": self.diagnostics,
|
||||
}
|
||||
Reference in new issue
Block a user