2017-01-25 53 views
1

我正在腳本化一個NodeJS服務器,它需要在將用戶密碼存儲到數據庫之前,除了其他數據之外還對用戶密碼進行散列處理。由於創建安全哈希的數學密集過程以及需要完成的大量哈希處理,我選擇了編碼C中的哈希處理。我的問題是這樣的:我添加了多少開銷通過執行通過child_process.exec編碼爲C的哈希處理,而不是爲NodeJS創建本地插件?NodeJS:本地插件與外部二進制文件的性能

I.E.每次需要對一段數據進行散列處理時,我都需要將該段數據作爲參數調用child_process.exec。

+0

https://stackoverflow.com/questions/28267794/advantages-of-node-js-addon-vs-child-process – AllTheTime

+0

據我所知,創建一個本地插件將是天生的更高性能,我的問題是多少考慮到資源開銷/處理時間,假定執行等效功能的情況下,更高性能的是本地插件vs child_process.exec。 – nicktendo

回答

1

與僅在現有節點進程上執行代碼相比,產生子進程會產生大量開銷。這兩個過程需要通過stdio進行連接和通信。如果你想要具體的東西,你必須自己測試一下你的用例。一種測試方法是找到一個本地散列庫,並根據你的C子進程進行測試。這樣說,除非您每秒鐘註冊數百個用戶,否則使用子進程的性能開銷是完全可以忽略不計的。你甚至可以在節點中做散列,並且很可能不會注意到這種差異。實際上,您應該只使用節點中包含的'crypto'模塊,因爲它已經是本地模塊。

https://stackoverflow.com/a/17201493/3355076有一個簡單的例子。