我通過Boost.Serialization反序列化相當數量的數據(每幀一個)。但是,當我輸出反序列化需要多長時間時,其變化很大。目前這個速度並不是不可靠的,但是加快速度會更好。數據表示相同的類,數組,地圖和矢量,但僅具有不同的值。Boost反序列化優化?
考慮到每個反序列化發生時的內存尖峯效應,我不得不相信,這樣做比繼續分配和釋放所有這些內存有更好的方式。
這裏有幾個讀取時間爲例子:
Deserialization - 390 milliseconds
Deserialization - 422 milliseconds
Deserialization - 422 milliseconds
Deserialization - 422 milliseconds
Deserialization - 438 milliseconds
Deserialization - 2156 milliseconds
Deserialization - 1797 milliseconds
Deserialization - 1656 milliseconds
Deserialization - 1328 milliseconds
Deserialization - 1219 milliseconds
Deserialization - 1078 milliseconds
Deserialization - 1078 milliseconds
有編寫自定義的反序列化功能對於使用Boost.Serialization這樣我就可以在指定分配內存相同數據的方法開始,然後只是改變它們的值爲每個幀?
更新:我意識到我使用的優化標誌的一個小問題是導致序列化數據寫入不正確,導致反序列化時間不一致。解決這個問題之後,現在每幀一直在750-780毫秒。當我真的只想序列化內容(因爲容器的大小和索引保持完全相同)時,我的原始問題仍然存在,因爲目前我正在序列化和反序列化整個stl容器。我不確定最好的方式去做這件事。
什麼框架?視頻也許?另外,從運行到運行的各個幀 - 反序列化時間是否可重複?另外,你是從硬盤或內存讀取輸入嗎?如果前者,那麼硬盤尋道時間以及幀是否已經被緩存可能會主宰其他所有。 – 2009-04-11 15:15:57
基本上的視頻幀(儘管它實際上是表示數據)。看到我對這個問題的更新。關於輸入,它都是從磁盤序列化和反序列化的。也許在循環幀之前將數據從磁盤初始傳輸到內存會有所幫助。 – Dan 2009-04-11 16:30:52