Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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中找出对象和字符串的字节大小来分析数据的效率_Javascript_Json_Node.js - Fatal编程技术网

如何在javascript中找出对象和字符串的字节大小来分析数据的效率

如何在javascript中找出对象和字符串的字节大小来分析数据的效率,javascript,json,node.js,Javascript,Json,Node.js,我正在服务器上发送以下数据 var loc = { type : 'exloc', ms : this.var1.move, ppx : this.var1.ppx, ppy : this.var1.ppy, Name

我正在服务器上发送以下数据

        var loc = {
            type            : 'exloc',                      
            ms              : this.var1.move,
            ppx             : this.var1.ppx,
            ppy             : this.var1.ppy,
            Name            : "red",
            rid             : this.gv.GlobalInfoHolder.CurrentRoomID
        };
我也可以用下面的表格发送这些数据

 var obj = "type=exloc,ms="+this.var1.move+",ppx="+this.var1.ppx+",ppy="+this.var1.ppy+",Name=red,rid="+this.gv.GlobalInfoHolder.CurrentRoomID;
然后,我可以根据我输入的逗号
剥离
数据

另一种方法是将对象编码为
json
,然后将数据发送到服务器并解码

所以我想问,对于这个问题,什么是最好的解决方案?如果有人告诉我如何分析这些变量(包括json解决方案)的字节大小,那就更好了


我想选择一个变量大小最小的解决方案。我这样做是为了提高性能和效率,如果有人想提出一些他/她最受欢迎的建议。我之所以考虑这个问题,是因为我正在开发一个实时游戏,它必须在客户机和服务器之间快速(以毫秒为单位)共享数据

只需获取一个网络分析仪程序(如免费的Fiddler或许多其他可用于相同目的的程序),然后查看通过网络发送的确切内容。我一直这样做是为了调试客户机/服务器问题。它非常简单,可以准确地显示客户端和服务器之间发送的内容

JSON并不是存储效率最高的格式,因此如果您试图优化大小,您可能已经知道这可能不是最佳选择,因为冗余较少的格式(字段名的单个副本与多个副本相比)几乎总是更紧凑


此外,你应该首先弄清楚这些是否重要。如果您的数据总体上很小,那么40字节和80字节之间的性能差异可能太小,甚至无法在单个客户机上测量。另一方面,如果您有数千条记录要传输,那么每条记录的大小可能足以产生不同。

只需获取一个网络分析程序(如免费的Fiddler或许多其他可用于相同内容的程序)并查看通过线路发送的确切内容。我一直这样做是为了调试客户机/服务器问题。它非常简单,可以准确地显示客户端和服务器之间发送的内容

JSON并不是存储效率最高的格式,因此如果您试图优化大小,您可能已经知道这可能不是最佳选择,因为冗余较少的格式(字段名的单个副本与多个副本相比)几乎总是更紧凑


此外,你应该首先弄清楚这些是否重要。如果您的数据总体上很小,那么40字节和80字节之间的性能差异可能太小,甚至无法在单个客户机上测量。另一方面,如果您有数千条记录要传输,那么每条记录的大小就足以产生差异。

JSON对于您尝试执行的操作来说开销很小,并且考虑了可能以输入数据结尾的所有类型的字符。当然,逗号分隔方法的开销会更小;但是我在流量非常大的环境中通过AJAX使用JSON,没有任何问题。JSON基本上是系统间纯文本对象传输的标准,这是有原因的。@Dave-JSON对于互操作性非常有用。如果您发送1000条数据记录,每个记录中都有相同的字段,JSON将充满冗余,其他格式将更加高效。但是,如果我们谈论的是在毫秒内数千个用户之间共享数据,这些解决方案还足够吗?JSON对于您尝试执行的操作来说,开销非常小,并说明可能以输入数据结尾的所有类型的字符。当然,逗号分隔方法的开销会更小;但是我在流量非常大的环境中通过AJAX使用JSON,没有任何问题。JSON基本上是系统间纯文本对象传输的标准,这是有原因的。@Dave-JSON对于互操作性非常有用。如果您发送1000条数据记录,每个记录中都有相同的字段,JSON将充满冗余,其他格式将更加高效。但是,如果我们谈论的是数千个用户在毫秒内共享数据,这些解决方案是否仍然足够?我想发送我在问题中向您展示的数据,我使用了这家伙建议的函数
http://stackoverflow.com/questions/1248302/javascript-object-size
查找对象字节大小,因此该函数给出的大小约为100-104字节。我想更频繁地发送数据,因为我正在开发实时游戏,因此我考虑使用该函数只发送数据,一次只发送一条数据记录,那么使用什么格式就无关紧要了,因为数据太小了。在客户机和服务器上使用最简单的格式。如果它是其他程序员使用的API,我会说使用JSON,因为它是完全文档化的,完全可互操作的,并且不需要文档。如果你能说出20字节和30字节之间的性能差异,我会感到惊讶。它可能都在一个数据包中,TCP信令开销比您的实际数据要多。如果数千个用户之间以毫秒为单位共享数据,这可以吗?@Mj1992-如果您的数据比典型的TCP数据包少,那就无关紧要了。阅读本文了解TCP/IP中涉及的开销。您将有至少40-50字节的TCP/IP开销(可能更多)对于单个数据包传输,这甚至不包括为确认交付而发送的确认数据包。@Mj1992-还请记住,一旦你的应用程序启动并运行,如果你得到任何需要更小的信息,那么这应该是很容易改变的。过早优化通常是浪费时间,使事情变得比需要的更复杂,并花费时间,这是b