gpt4 book ai didi

php - 存储数据的数组或对象 - 什么是更好的解决方案

转载 作者:可可西里 更新时间:2023-11-01 00:47:08 24 4
gpt4 key购买 nike

我只是在想什么可以给我更好的性能和内存使用率。我正在为游戏编写 map 。一切都存储在“ map ”类中,但 map 可能有数千个图 block 。现在我在想什么是更好的解决方案:

  • 将每个图 block 参数保存在 x-y 数组中(图 block x = 10,y = 11 数据存储在像 map[10][11] = params 这样的数组中),如果我想知道关于图 block 的一些信息,请调用不同的数组x-y参数
  • 将瓷砖视为一个对象并制定方法,它可以轻松返回瓷砖的邻居,所有数据也作为数组存储在每个对象中的某个地方。

因为我可能有数千个类似的图 block ,所以第一印象是它最适合 oop 编程,但我担心数以千计的对象图 block 可能会占用更多内存并且调用它的方法可能会更慢。你怎么看?

卡雷格

最佳答案

这取决于您使用的 php 版本。如果您使用的版本是 PHP5 或更高版本(您应该使用最新的 php 版本将意味着您的游戏应用程序具有更高的性能),那么同时使用数组和对象将为您的应用程序提供几乎相同的性能。因此,如果您正在使用/可以使用 PHP 5 或更高版本,那么您可以根据自己的方便使用数组或对象。

检查此数组与 Aron Novak 的对象比较/测试:http://aggregation.novaak.net/?q=node/227 .我在下面引用 Aron Novak 的话:

I created a small script to find out which data structure has better performance. You can find the script what I used for the test at the attachments.
My test results are:
data structure PHP4 PHP5
object 61.6224 37.576
array 57.6644 37.866

The results are in milliseconds(ms). It seems that in PHP5 the data structure is totally indifferent, in PHP4 there is approximately 7% performance gain if use arrays instead of objects.
"This revolution, however, left PHP's object model mostly unchanged from version 3 – it was still very simple. Objects were still very much syntactic sugar for associative arrays, and didn't offer users too many features on top of that." (http://devzone.zend.com/node/view/id/1717)
So the syntactic sugar is not a bad thing at all :) And it costs almost nothing. This is an explanation why all the parsers' output uses objects.

检查这个http://we-love-php.blogspot.com/2012/06/php-memory-consumption-with-arrays.html有关 PHP 数组与对象内存使用和性能

的详细/精彩文章

关于php - 存储数据的数组或对象 - 什么是更好的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com