Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中分隔字符串与JSON解析效率的对比_Javascript_Json_Performance_Split_String Parsing - Fatal编程技术网

JavaScript中分隔字符串与JSON解析效率的对比

JavaScript中分隔字符串与JSON解析效率的对比,javascript,json,performance,split,string-parsing,Javascript,Json,Performance,Split,String Parsing,我需要通过AJAX检索大量数据(坐标加上一个额外的值)。数据格式为: -72.781;;6,-68.811;;8 注意使用了两个不同的分隔符:和, 我应该返回一个带分隔符的字符串并使用string.split()(两次)还是返回一个JSON字符串并使用JSON.parse()解包数据更好?每种方法中最差和最好的是什么?即使数据非常大,它们在现实世界中产生明显性能差异的可能性也非常低(数据传输时间将超过解码时间)。因此,除非存在实际的性能问题,最好从代码清晰性的角度关注什么是最好的 如果数据是同

我需要通过AJAX检索大量数据(坐标加上一个额外的值)。数据格式为:

-72.781;;6,-68.811;;8
注意使用了两个不同的分隔符:


我应该返回一个带分隔符的字符串并使用
string.split()
(两次)还是返回一个JSON字符串并使用
JSON.parse()
解包数据更好?每种方法中最差和最好的是什么?

即使数据非常大,它们在现实世界中产生明显性能差异的可能性也非常低(数据传输时间将超过解码时间)。因此,除非存在实际的性能问题,最好从代码清晰性的角度关注什么是最好的

如果数据是同质的(处理每个坐标的方式基本相同),那么
String#split
方法就没有问题

如果您需要在代码中单独引用坐标,那么将有一个参数用于为它们指定专有名称,这将建议使用JSON。我倾向于清晰,所以我可能倾向于JSON

另外要考虑的是电线上的尺寸。如果您只需要支持漂亮的fat网络连接,这可能无关紧要,但由于每个对象都会重复使用JSON键,因此大小可能会明显增大。这可能有道理。

我已经创建了一个描述您的问题的文档。
尽管这取决于浏览器的实现,但在许多情况下(如结果所示)
split
会快得多,因为
JSON.parse
在后台做很多其他事情,但您需要提供数据以方便解析:在测试中,我添加了一个使用
split
(在
replace
中)的情况为了解析已经格式化的json数组,结果不言而喻


总而言之,我不会使用一个比JSON快几毫秒但却比JSON难读和维护n秒的脚本。

如果您使用预期的返回结果类型JSON进行ajax调用,您就不需要再使用JSON.parse()。这个问题非常广泛。你应该在真实的数据集上运行一些基准测试,看看哪一个性能更好。这真的由你来决定,不是吗?当然,
split
强制您在数据中使用简单的数组结构,而JSON允许您的数据更复杂。@Brandan问题似乎更多地是关于最佳实践,而不是哪种性能最好。即使返回单个字符串并调用
.split()
更快,但这并不意味着这是最好的方法。
JSON.parse()
将是更好的方法,但您必须注意跨浏览器兼容性…实际上每个坐标都附加了一个字段值。让我编辑这个问题。请看编辑。阿马尔:我不确定我说过我确实认为弦乐分割> /代码>会更好吗?(我建议你考虑每一种方法,我不提倡一种方法)。虽然您添加到问题中的数据仍然可以通过
String#split
直接获取,但如果数据的各个部分有不同的含义,我会倾向于使用JSON。真名很有用。使用JSON的缺点是它在网络上会更大。啊,那么在这里选择哪一个呢?我仍然觉得在这种情况下只选择split会更好这表明了相反的情况,有什么原因吗?随着响应变得更复杂(像数组的数组),两种解析方法都有更多的工作要做。在本例中,
JSON.parse
几乎不需要进行任何验证,因为所有数组成员都是简单的字符串。由于您有一个坐标数组,我认为我描述的测试比其他测试更接近您的问题。