Tag: 性能

JavaScript程序的执行时间

我正在处理JavaScript程序的执行时间。 当我使用nodejs / v8运行它们时,shell上的time命令返回不同的执行时间。 *是否可以对这样的程序执行沙箱,以便在不同的运行中获得不变或更less的执行时间? *有没有其他的方法来检查使用nodejs / v8这些程序的执行时间?

npm脚本的时序/性能指标

有没有一种方法来衡量一个npm脚本的性能类似于时间咕噜作品的方式? 我正在将一些关键的构build任务移至使用npm而不是Grunt,因为编写自己的构build脚本比使用grunt-browserify等一些Grunt插件更灵活。 我已经尝试使用console.time()但在脚本完成之前完成,我假设,因为方法是asynchronous的。 我也尝试运行npm脚本作为一个像这样的Grunt任务: grunt.registerTask('collectify', function () { grunt.util.spawn({ cmd: 'npm', args: ['run', 'collectify:app'] }); }); 但是,输出是不同的,如果我从命令行运行npm run collectify:app ,可能是因为pwd问题。 彩条会很好,但至less我希望看到时间的数字。

v8 / chrome / node.js函数内联

我如何编写v8将内联的函数? 有没有任何工具来预编译我的代码来静态内联一些函数? 要静态转换函数和函数调用以避免捕获值? 背景 我注意到我写的一个JS程序的瓶颈是一个非常简单的函数调用:我在迭代数百万次的循环中调用函数,并手动内联函数(即用代码replace函数),加快了代码的速度几个数量级。 之后,我试着研究一下这个问题,但是不能推断v8如何优化函数调用的规则,以及如何编写高效的函数。 示例代码:迭代10亿次 递增计数器: let counter = 0; while(counter < 1e9) ++counter; 在我的系统上,Google Chrome / Chromium和v8都需要大约1秒的时间。 ~14秒,迭代1e10次。 给计数器赋值递增函数的值: function incr(c) { return c+1; } let counter = 0; while(counter < 1e9) counter = incr(counter); 大约需要1秒 。 ~14秒,迭代1e10次。 调用一个函数(只声明一次),增加捕获的计数器: let counter = 0; function incr() { ++counter; } while(counter < 1e9) incr(); […]

Nodejs:parsingCSV和Zip的性能问题

这些文件被提交给我的服务器,我试图确定CSV是否有效,以及从CSV引用的所有图像都存在于zip中。 我必须使用所有这些信息来填充Mongo数据库,但是我想在后台执行此操作,并尽可能快地向客户端发送响应。 所以我有两个可读的stream,我有三种不同的方法: 解压文件需要24秒,所以解压缩csv + fs.exists不是一个选项。 parsing整个csv,保存数组中的文件名,然后使用node-unzip和pipe读取zip需要5秒钟。 读取csv并行读取zip并使用共享数组同时确定文件是否存在,这是最快的选项,需要4秒钟。 有没有人有一个想法如何更快地做到这一点? 编辑 :用于validation的代码是: // lib/validator.js function validateParallel(csv, zip) { const shared = {}; return new Promise((resolve, reject) => { const l = CSV_VALIDATORS.length – 1; csv .pipe(split()) .pipe(through2(validateLine.bind({ zip, reject, n: 0, l, shared }))) .on('finish', () => { zip .pipe(unzip.Parse()) .on('entry', (entry) => { delete shared[entry.path]; […]

如何将多个图像作为input传递给python脚本

我使用nodejs来调用一个python脚本,该脚本为从硬盘读取的一些jpg图像运行对象检测。 这些图像在调用脚本之前由nodejs写入磁盘。 为了使它dynamic和更快,现在我想发送多个图像作为从nodejs到python脚本的multidimensional array。 这节省了我从磁盘写入和读取图像。 这是做这个最好的方法吗? 如果是的话,我如何将图像作为multidimensional array传递给python脚本? 还是有更好的解决scheme?

如果我们正在循环访问当前项目,哪个更适合/ forEach?

每个人都在说什么for更高性能,然后forEach例如 https://jsperf.com/for-vs-foreach/37 Javascript效率:“for”vs“forEach” 但是当访问循环中的当前元素时它是否成立。 如果不是,为什么不,如果是的话,下面的代码是什么呢,在不同的情况下会产生矛盾的结果: 逻辑: //—————————————- var arr = [], len = 1000000, nos = 100; for(var t = 0; t<len; t++) { arr.push({ a:'a',b:'b',t:Math.random() }); } //—————————————- //===========forEach start==================== var tp1 = new Date(); arr.forEach( (ik)=>{ let tmp = []; for(let x = 0;x<nos;x++){ tmp.push(ik.a); } }); var tp2 = new Date(); //===========forEach […]

JavaScript简化器?

我想消除那些未被使用或者与特定上下文无关的函数。 假设我们有: function a(){ console.log('this is an unrelated function'); } function b(){ console.log('world'); } function c(){ console.log('hello' + b()); } c(); 现在a()根本不用,我不需要它,它只是使脚本更大。 这实际上也是jQuery的情况。 我不确定是否需要像jQuery那样多的代码。 我使用jQuery仅用于highcharts并通过id和class来从dom中select元素,但是如果不使用未使用的函数,jQuery实在是太大了,那真是太好了! 是否有在线工具,服务,function/方法,应用程序可以做到这一点缩小?

优化Node.js入站/出站连接

我有关于node.js入站/出站连接的问题。 让我们考虑一下我的情况或者我想达到的目的: 我有例如每秒X入站http请求。 对于每个请求,我创build出站https请求给一些第三方(他们回应我平均300毫秒)。 当我收到这个第三方的回复时,我认为这个请求会被处理。 让我们想象第三方有很多很多的服务器,可以并行pipe理请求。 对于每个请求我有几个mongoDB查询(这是快速)。 我使用快速框架。 在我的笔记本电脑(4核心和4 GB的RAM与Windows和很多其他程序可能会损害性能可能会损坏)我能够得到每秒150个请求,但只有40个被处理。 我不知道:这实际上是现实吗?理论上我不能在这个世界上有更多或者某个地方能够获得一些解决scheme/技巧来改善我的performance吗? 感谢您的任何build议。

node.js HTTP服务器响应速度较慢,文件较小

我正在为node.js中的一个简单的HTTP服务器开发一个性能testing: var http = require('http'); var fs = require('fs'); var NO_CACHE = true; var fileCache; var sendFile = function(conn, file) { conn.writeHead(200, {'Content-Type': 'text/html', 'Content-Length': file.length}); conn.write(file); conn.end(); } http.createServer(function (req, res) { if (NO_CACHE || fileCache == undefined) { fs.readFile('index.html', function(err, file) { fileCache = file; sendFile(res, fileCache); }); } else { sendFile(res, fileCache); […]

websocket实现的性能比较

编辑:防止closures这个问题,我只是把它缩小到必要的。 有人可以在下面列出的两个websocket实现之间共享MB / s的性能testing吗? 应用程序或硬件细节是不相关的,只是一个简单的常见场景的两个粗略的数字就足够了。 原来的问题 有人testing了这两个websocket实现node.js的性能吗? WebSocket的节点 WS 我最近找不到任何东西(只是2012-2013的一些文章)。 我想看到的是: 开销(如果有的话,考虑到实际的networking延迟更相关,我想他们都收敛到0) 吞吐量(一个简单的MB / S图相同的应用程序/硬件会很好) 真的可以在networking层面上广播数据(尽pipe有底层的TCP?这是可能的吗?)还是仅仅是一个被滥用的方法名称(实际上在for()循环中向多个客户端发送相同的消息)? 更好: 有/无Naglealgorithm的比较 JSON与二进制消息的比较