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

用javascript创建和解析巨大的字符串?,javascript,Javascript,我有一段简单的数据,以普通字符串的形式存储在服务器上。这有点可笑,但看起来是这样的: name|date|grade|description|name|date|grade|description|repeat for a long time 此字符串的大小可达1.4mb。这个想法是,它是一堆学生记录,只是用一个简单的管道测力仪串在一起。这是一种非常糟糕的序列化方法 一旦这个巨大的字符串被推送到客户机,它将使用javascript沿着管道再次拆分为学生记录 我一直在计算在客户端创建和拆分这些字

我有一段简单的数据,以普通字符串的形式存储在服务器上。这有点可笑,但看起来是这样的:

name|date|grade|description|name|date|grade|description|repeat for a long time
此字符串的大小可达1.4mb。这个想法是,它是一堆学生记录,只是用一个简单的管道测力仪串在一起。这是一种非常糟糕的序列化方法

一旦这个巨大的字符串被推送到客户机,它将使用javascript沿着管道再次拆分为学生记录

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

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

是的,如果你对这个有什么评论的话,这比什么都有趣


感谢

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

但看起来您的学生记录数据可以放在数据库中,并且可能不需要在加载时加载所有内容,因此,如何进行分页以显示用户记录或使用ajax请求搜索某些用户名?

如果是一个非常大的字符串,则可能需要使用
'string'。slice(from,to)连续切片字符串
只处理较小的子集,使用
list.push()或类似的方法将所有单个项追加到输出的末尾

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

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


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

除了S.Mark对本地与x-fer速度的出色评论以及使用AJAX重新编码的技巧外,我建议(长期)在浏览器中远离JavaScript(假设它运行的是)到JS的非浏览器实现(或者可能是另一种语言)


基于浏览器的JS似乎是data-x-fer链中的一个星期链接,我不想在没有监控的情况下运行任何东西,因为浏览器会不时升级,破坏您的JS-x-fer可能会产生意想不到的副作用!

+1我看到的一个问题是依赖基于浏览器的JS实现。