真的很简单。我有大量的JSON需要处理,总共100GB。这100GB分为多个文件,每个文件通常为1mb。
所以这让我感到疑惑,通常会说在Javascript中解析JSON文件会更快或者我会使用Java的JSON jar处理文件的类似结果吗?
现在显然我必须多线程所有这些等等。
答案 0 :(得分:6)
使用您最擅长的任何技术,巨大的性能差异的可能性很低。 V8(谷歌的JavaScript引擎 - 在Chrome浏览器中最着名,在非浏览器环境中的NodeJS中,但也可以单独运行)速度非常快,Sun / Oracle的JVM具有出色的热点优化技术。如果您愿意,甚至可以在JVM上使用JavaScript(Rhino)。
现在显然我必须多线程所有这些等等。
根本不明显。如果这个过程是I / O绑定的(如果你正在读取一千个100MB的文件,听起来可能会这样,取决于你用它们做什么),添加多个线程对你没有帮助。
答案 1 :(得分:1)
我认为在java中处理它会更容易,更快,更容易扩展(ThreadPoolExecutor)。 你是如何计划用javascript做的?独自站在V8?
答案 2 :(得分:0)
如果你知道,我会使用Node.js.最好在Javascript构建的环境中处理JSON对象
答案 3 :(得分:0)
两种语言都在虚拟执行环境中运行,因此执行速度将更加依赖于您使用的VM,并且最近的VM变得非常快,特别是在最近的硬件上。
据我所知,javascript没有对线程的“本机”支持。多线程是在“时间共享”执行中实现的,以防止锁定。然而,"webworkers"似乎不再是这种情况。您也可以将文件拆分为不同的进程,这些进程将独立处理文件,但这会生成大量并发磁盘访问,这很可能是处理时的瓶颈你的文件。
所以我建议你选择最适合的语言。
顺便说一下。介意告诉我们你将在json文件上做什么样的处理?
如果我要实现这个:为了限制并发IO,我有一个第一个线程,它将一次预取一个文件并将其读入内存并排队一个工人来处理该文件(如果处理很重线程池肯定会提高处理速度。)