我正在用 Node.js 编写一个 TCP 服务器来处理来自多个连接的传入数据。服务器解析传入的数据流并返回存储在数据库中的对象。我正在尝试对性能进行一些优化,并测试了两种编码实践:
- 片段 1 使用嵌套的匿名回调。
- Snippet 2 使用声明的函数来替换匿名回调。
我假设片段 2 会更快,因为它避免了为每个新传入的数据包创建新的函数对象。然而,在现实生活中,片段 1 似乎快了 20%。
有谁知道为什么?
片段1:
function TcpOnConnection (stream) {
stream.on("data", function(data) {
parseTcp(data,function(err,obj) {
if (err) console.log(err.message);
if (obj) {
stream.write(obj.returnMsg);
storeData(obj);
}
});
});
}
TCPserver.on("connection",TcpOnConnection);
片段 2:
function TcpOnConnection (stream) {
function handleParsed(err,obj) {
if (err) console.log(err.message);
if (obj) {
stream.write(obj.returnMsg);
storeData(obj);
}
}
function StreamOnData(data) {
parseTcp(data,handleParsed);
}
stream.on("data", StreamOnData);
}
TCPserver.on("connection",TcpOnConnection);