使用javascript创建和解析大字符串?

时间:2010-04-26 05:14:29

标签: javascript

我有一个简单的数据,我将其作为普通字符串存储在服务器上。这有点荒谬,但看起来像这样:

name|date|grade|description|name|date|grade|description|repeat for a long time

此字符串的大小最大可达1.4mb。这个想法是,它是一堆学生记录,只是简单的管道分隔线。这是一种非常差的序列化方法。

将这个庞大的字符串推送到客户端后,使用javascript将其沿管道拆分为学生记录。

我一直在计算在客户端创建和拆分这些字符串需要多长时间。时间实际上相当不错,我在几台不同的机器上看到的最慢的运行时间是10,000秒的“学生记录”0.2秒,其最终字符串大小约为1.4mb。

我意识到这很奇怪,只是想知道使用javascript创建和拆分这么大的字符串是否有任何固有的问题?我不知道不同的浏览器如何实现他们的javascript引擎。我在'主要'浏览器上试过这个,但是不知道它会如何在每个浏览器的早期版本上执行。

是的,正在寻找对此的任何评论,这比其他任何事情都更有趣!

由于

3 个答案:

答案 0 :(得分:1)

1.4mb数据的字符串拆分对于不错的机器来说不是问题,相反,您应该担心用户的互联网连接速度。我试过用800 kb字典进行拼写检查(这是你数据的一半),主要问题是加载时间。

但看起来您的学生记录数据可能会被放入数据库中,并且可能不需要在加载时加载所有内容,那么,如何显示用户记录或使用ajax请求搜索某些用户名呢?< / p>

答案 1 :(得分:1)

如果它是真正的大字符串,则可能需要继续使用'string'.slice(from, to)对字符串进行切片以仅处理较小的子集,将所有单个项目附加到输出的末尾list.push()或类似的东西可能有用。

字符串拆分方法可能是最有效的方法,即使在IE中也是如此。使用string.charAt(x)处理单个字符非常慢,并且通常会在浏览器停止时显示安全性错误。使用字符串拆分方法肯定比使用正则表达式拆分要快得多。

也可以使用JSON数组对数据进行编码,一些较新的浏览器(如IE8 / Webkit / FF3.5)使用JSON.parse(data)内置快速JSON解析。但是如果有足够的数据,使用eval(JSON)可能会溢出浏览器,所以这可能是一个坏主意。比较性能可能会付出代价。

在很多情况下,更好的方法是使用AJAX并且只从服务器一次加载一些数据,这也可以节省下载时间。

答案 2 :(得分:1)

除了S. Mark关于本地与x-fer速度的优秀评论以及使用AJAX重新编码的提示之外,我建议(长期)在浏览器中远离JavaScript(假设它运行< / strong>)要么是JS的非浏览器实现(或者可能是另一种语言)。

基于浏览器的JS似乎是数据-x-fer链中的一周链接,而我不希望不受监控地运行,因为浏览器不时升级并且破坏你的JS-x-fer可能是一个意料之外的方面实现!