我使用node.js爲一些存儲在SQLite數據庫中的PNG圖像提供二進制BLOB。這些圖像很小,平均9500字節。是什麼讓node.js SlowBuffers「慢」?
我使用the sqlite3 npm package,這似乎返回二進制BLOB對象作爲SlowBuffers
。我的node.js服務在內存中保存這些SlowBuffers
緩解IO等待時間,爲他們提供服務是這樣的:
response.send(slowBuffer);
看來,SlowBuffer
有類似Buffer
的接口;轉換爲Buffer
很簡單:
var f = function(slowBuffer) {
var buffer = new Buffer(slowBuffer.length);
slowBuffer.copy(buffer);
return buffer;
}
我應該將這些SlowBuffers
到Buffers
?
幫助我理解了爲什麼他們被稱爲「慢」緩衝區。
如果'Buffer'中的數據無論如何都只是使用'SlowBuffer',那麼爲什麼會有所不同呢?是否預先分配了'SlowBuffer's? – Brad
兩者都是內存分配,但Buffer使用原生JS函數來操縱內存,而SlowBuffer使用外部C++ API。從node.js調用C++ API時會有開銷。 – user568109
當需要的內存超過8K時,'Buffer'只使用'SlowBuffer'嗎?這與「每個緩衝區實際上由SlowBuffer支持」相沖突,這是我感到困惑的地方。 – Brad