Tag: 性能

使用redis的nodejs http只有6000req / s

testingnode_redis基准,它显示incr有超过10万ops / s $ node multi_bench.js Client count: 5, node version: 0.10.15, server version: 2.6.4, parser: hiredis INCR, 1/5 min/max/avg/p95: 0/ 2/ 0.06/ 1.00 1233ms total, 16220.60 ops/sec INCR, 50/5 min/max/avg/p95: 0/ 4/ 1.61/ 3.00 648ms total, 30864.20 ops/sec INCR, 200/5 min/max/avg/p95: 0/ 14/ 5.28/ 9.00 529ms total, 37807.18 ops/sec INCR, 20000/5 min/max/avg/p95: 42/ 508/ […]

WebStorm使用100%的CPU

我使用WebStorm 11并在Angular2中开发。 ng服务器正在从cmd的背景下工作,CPU在1%的工作。 当WebStorm打开时,CPU跳到30%-60%,当他开始索引时,它会达到100%,直到WebStorm崩溃。 我有Intel(R)Core(TM)i503210M CPU @ 2.50GHz 2.50GHz和8G RAM(我没有RAM问题)。 我排除dist和node_modules文件夹,但索引仍然需要太长时间。 WebStorm.exe.vmoptions: -server -Xms128m -Xmx1012m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=512m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow 索引是做什么的? 我可以把它关掉吗? 什么是最好的方式来configuration这个小项目?

在Javascript中的循环性能

正如我的研究让我相信,循环是JavaScript语言中最快的迭代构造。 我在想,也为for循环声明一个条件长度值会更快一些…为了使它更清晰,你认为下面哪个更快? 例子一 for(var i = 0; i < myLargeArray.length; i++ ) { console.log(myLargeArray[i]); } 例子TWO var count = myLargeArray.length; for(var i = 0; i < count; i++ ) { console.log(myLargeArray[i]); } 我的逻辑是这样的:在每次迭代中,在每次迭代中访问myLargeArray的长度在计算上都比较昂贵,那么访问如示例2所示的简单整数值?

在20万条logging之后,Mongodb的回应令人难以置信

目前我们的任务是从外部服务器获取100万条logging,处理它并将其保存在数据库中。 我们使用node.js来获取logging和mongodb作为数据库。 我们决定把这个过程分成2个任务,取出logging并处理。 现在我们可以获取所有logging并将其转储到mongo中,但是当我们试图处理它时(通过处理我的意思是改变一些属性值,做一些简单的计算并更新属性),我们看到在mongodb中的响应速度非常慢更新大约200,000条logging。 为了处理数据,我们批量处理1000条logging,更新logging(单独),然后进行下一批处理。 怎样才能让表演变得更好?

如何优化在MongoDB中使用大数据集的工作

我们有多个在node.js中生成的大约10,000个文档的集合(将来会越来越多),并且需要多次存储/查询/过滤/投影,我们有一个mongodb 聚合pipe道 。 一旦某些条件得到满足,文件将被重新生成并存储。 当我们有5000个文件时,一切正常。 我们将它们作为数组插入到单个文档中,并在聚合pipe道中unwind使用。 但是,在某个时候,文档不再适合单个文档,因为它超过了16 MB的文档大小限制。 我们需要将所有内容都存储起来,并添加一些标识符来知道它们属于哪个“集合”,所以我们只能在这些文档上使用pipe道。 问题:在我们可以在pipe道中查询这些文件之前写入这些文件是有问题的。 bulk.execute()部分可以很容易地花费10 – 15秒。 将它们添加到node.js中的数组中,并将<16 MB文档写入MongoDB只需要几分之一秒。 bulk = col.initializeOrderedBulkOp(); for (var i = 0, l = docs.length; i < l; i++) { bulk.insert({ doc : docs[i], group : group.metadata }); } bulk.execute(bulkOpts, function(err, result) { // … } 我们如何解决大量的写入开销延迟? 思念至今: 基于内存的集合临时处理数据写入磁盘时的查询。 如果内存存储引擎 (警报:被认为是beta而不是生产)值得MongoDB Enterprise许可, WiredTiger存储引擎可能比MMAPv1有更好的压缩和encryption性能。 无论如何存储单个(数组)文件,但将其分成<16 […]

Node.js比使用Tesseract.Js的浏览器(Safari)慢20倍

新来的JS和非常新的节点。 在Safari中运行Tesseract.js(文本识别软件: http : //tesseract.projectnaptha.com )大约需要10秒,并立即开始输出进度。 节点(v6.9.1)(从terminal运行或通过电子运行)在CPU开始输出到控制台之前,运行CPU到100%4分钟20秒。 然后在几乎同一时间结束。 什么故障排除步骤build议? 这是常见的节点? 只有在日志中看到的差异是Safari“在cachingeng.traineddata中find”清除和禁用caching只影响最小的时间。 已经尝试了一些.JPG和.PNG(300-600kb)的文件,但是BMP(3.7MB)却给出了17秒的快速响应 – 然后错误并没有完成。 (这是“下一个打勾”问题?) var Tesseract = require('tesseract.js'); var image = "./images/sample.jpg"; function tesseract(){ Tesseract.recognize(image) .progress(function(message){console.log(message)}) .then(result => console.log(result.text)) } tesseract(); (编辑器强制将输出格式化为代码) NODE console.Log >Bash-3.2$ node JustTess.js *Waits 4+ min and Then* { status: 'loading tesseract core' } { status: 'loaded tesseract core' } […]

什么使两个相同的对象性能不同?

资源 使用getter和setter定义两个对象,使用相同的代码 在node v7.3.0使用benchmark.js进行testing const builtInObject1 = (function (object) { let lastA = 1; return Object.defineProperties(object, { a:{ get(){ return lastA }, set(newValue){ lastA = newValue; } } }) })({}); const builtInObject2 = (function (object) { let lastA = 1; return Object.defineProperties(object, { a:{ get(){ return lastA }, set(newValue){ lastA = newValue; } } }) […]

打字稿编辑变慢 – WebStorm

有些日子以来,我看到打字稿的编写速度越来越慢。 使用webstorm文件观察器编译一个文件花了我大约1-4秒,但我添加了许多TS文件(现在75,我认为这不是很多…),一个简单的文件编译时间约10秒。 如果我需要更改分支或更新定义,它可能会变成5分钟左右。 我的电脑真的很强大(游戏电脑),我不明白为什么它变得这么慢。 所有的文件都是逐一编译的,webstorm的方式…如果服务器与监视器同时运行,它会变得疯狂,因为重新启动可能是50次。 (显然,我把它closures了,但如果我需要closures它,那么有一个观察者是没有用的) 任何想法? 我看了几次像我的讨论,但到目前为止,我没有真正find任何解决方法。

nodejs – 我发现multithreading或使用多个进程比单个进程慢。 为什么?

我有一个CPU密集型任务(循环通过一些数据和评估结果)。 我想利用这些多核心,但我的performance一直比使用单个核心更糟糕。 我试过了: 在不同的端口上创build多个进程,并将任务发送到这些进程 使用webworker-threads来使用线程池在不同线程中运行任务 通过计算我可以完成的迭代总数并除以我在这个问题上花费的时间来衡量结果。 当使用单核时,我的结果明显更好。 一些兴趣点: 我可以确定何时使用一个内核,何时通过任务pipe理器使用多个内核。 我正在使用预期的内核数量。 我有很多的内存 我已经试过在2或3个内核上运行 我添加了nextTicks,在这种情况下似乎没有任何影响 每个任务都需要几秒钟的时间,所以我不觉得自己失去了很多开销 有什么想法在这里发生了什么? 线程更新:我怀疑webworker线程中的错误跳过表示现在,我认为这个问题可能与我的线程循环。 我正在做的是创build一个线程,然后试图连续运行它们,但在它们之间来回发送数据。 即使这两个线程正在使用CPU,只有线程0返回值。 我的假设是散发出来的,通常最终会把信息传递给闲置时间最长的线程,但似乎并非如此。 我的设置看起来像这样 在threadtask.js中 thread.on('init', function() { thread.emit('ready'); thread.on('start', function(data) { console.log("THREAD " + thread.id + ": execute task"); //… console.log("THREAD " + thread.id + ": emit result"); thread.emit('result', otherData)); }); }); main.js var tp = Threads.createPool(NUM_THREADS); tp.load(threadtaskjsFilePath); […]

find未被V8优化的相应JS源代码

我尝试优化node.js应用程序的性能,因此我正在分析V8的JIT编译器的行为。 当通过node –trace_deopt –trace_opt –code_comments –print_optcode …运行应用程序时,输出包含许多重复的行,如下所示: [didn't find optimized code in optimized code map for 0x490a8b4aa69 <SharedFunctionInfo>] 我怎样才能找出哪个JavaScript代码对应于0x490a8b4aa69 ? 完整的输出在这里可用。