I/O 复杂度 vs Space 复杂度 vs 时间复杂度
I/O Complexity vs Space Complexity vs Time Complexity
我正在为 I/O 复杂性与 Space 复杂性与时间复杂性之间的术语而苦苦挣扎。
我知道什么是时间复杂度。但是,I/O 复杂性和 space 复杂性是一回事吗?
提前感谢您的回答。
我的理解如下:
- 时间复杂度表示操作(运行时)增长
- space复杂度表示内存使用增长
- I/O 复杂性 表示 I/O 操作(运行时)增长
是的,time 和 I/O 是相似的。不同之处在于现在 ALU 指令比 I/O 快得多(这在旧架构和 I/O 复杂度被忽略)。因此,如果您一次计算某些东西或将其分成需要 store/restrore 子结果 I/O 的子块,情况就不一样了。时间复杂度相同,但 I/O 复杂度不同,如果不小心,会极大地影响运行时间。
例如,OpenGL 的常见错误是每帧将纹理加载到 GPU 而不是一次。即使是内存传输也可以认为是I/O操作(通常使用DMA)。渲染时间复杂度是相同的……但 I/O 不同,fps 可能会显着下降。如果你有很多纹理,你可以按需加载它们(不是每帧,而是例如每层,建筑物,地图的一部分等......)所以 fps 仍然很高但是以 [=68 之间的加载时间为代价=]/...同样的原则适用于任何I/O相关的东西,而不仅仅是图形...
我正在为 I/O 复杂性与 Space 复杂性与时间复杂性之间的术语而苦苦挣扎。
我知道什么是时间复杂度。但是,I/O 复杂性和 space 复杂性是一回事吗?
提前感谢您的回答。
我的理解如下:
- 时间复杂度表示操作(运行时)增长
- space复杂度表示内存使用增长
- I/O 复杂性 表示 I/O 操作(运行时)增长
是的,time 和 I/O 是相似的。不同之处在于现在 ALU 指令比 I/O 快得多(这在旧架构和 I/O 复杂度被忽略)。因此,如果您一次计算某些东西或将其分成需要 store/restrore 子结果 I/O 的子块,情况就不一样了。时间复杂度相同,但 I/O 复杂度不同,如果不小心,会极大地影响运行时间。
例如,OpenGL 的常见错误是每帧将纹理加载到 GPU 而不是一次。即使是内存传输也可以认为是I/O操作(通常使用DMA)。渲染时间复杂度是相同的……但 I/O 不同,fps 可能会显着下降。如果你有很多纹理,你可以按需加载它们(不是每帧,而是例如每层,建筑物,地图的一部分等......)所以 fps 仍然很高但是以 [=68 之间的加载时间为代价=]/...同样的原则适用于任何I/O相关的东西,而不仅仅是图形...