Javascript 将静态数据存储在图像中而不是数组中有什么好处吗?

Javascript 将静态数据存储在图像中而不是数组中有什么好处吗?,javascript,memory,Javascript,Memory,我正在开发一个涉及世界地图的Javascript游戏,并将该地图绘制/存储为图像。图像上每个像素的颜色表示地图上的单元格将包含的内容 加载图像并动态读取其中的颜色,而不是将其预加载并存储为一个数组,会有内存消耗优势吗 此外,这样做可能会导致严重的速度下降吗 我可能会根据需要只加载其中的一部分,但同样的问题仍然存在。当前的测试图像是1000x1000像素。没有。没有。除非您关心绘制图像而不是手工书写数千个数字 从图像中检索数据的最快方法是获取“类似图像的对象”(基本上是画布或实际图像)并调用.ge

我正在开发一个涉及世界地图的Javascript游戏,并将该地图绘制/存储为图像。图像上每个像素的颜色表示地图上的单元格将包含的内容

加载图像并动态读取其中的颜色,而不是将其预加载并存储为一个数组,会有内存消耗优势吗

此外,这样做可能会导致严重的速度下降吗


我可能会根据需要只加载其中的一部分,但同样的问题仍然存在。当前的测试图像是1000x1000像素。

没有。没有。除非您关心绘制图像而不是手工书写数千个数字

从图像中检索数据的最快方法是获取“类似图像的对象”(基本上是画布或实际图像)并调用
.getImageData(x,y,width,height)
以获取像素值数组

如果有什么区别的话,那会增加“开销”(可以忽略不计),因为现在的值是原来的4倍多。每个像素存储在4个JavaScript数字上,因为您可以将每个分片作为单个整数标识符,这将浪费内存

尽管imageData对象允许您从中获取rect,并且如果您将有4个平铺层,那么像素的存储方式是最好的

如果你想把你的关卡存储为一个图像,那么我还是会把它存储在一个平面阵列中,因为如果我需要第5层,我可以切换几个数字,瞧,现在我的系统有5层,你不能用图像数据来做这件事


无论采用哪种方法,都要确保嵌套级别较低(所有层的平面数组都比每层4个数组好),并且从数组中检索值的速度足以满足您的需要。

不。没有。除非您关心绘制图像而不是手动写入数千个数字

从图像中检索数据的最快方法是获取“类似图像的对象”(基本上是画布或实际图像)并调用
.getImageData(x,y,width,height)
以获取像素值数组

如果有什么区别的话,那会增加“开销”(可以忽略不计),因为现在的值是原来的4倍多。每个像素存储在4个JavaScript数字上,因为您可以将每个分片作为单个整数标识符,这将浪费内存

尽管imageData对象允许您从中获取rect,并且如果您将有4个平铺层,那么像素的存储方式是最好的

如果你想把你的关卡存储为一个图像,那么我还是会把它存储在一个平面阵列中,因为如果我需要第5层,我可以切换几个数字,瞧,现在我的系统有5层,你不能用图像数据来做这件事


无论采用哪种方法,只要确保无论采用哪种方法,嵌套级别都很低(所有层的平面阵列都比每层4个阵列好)从数组中检索值的速度足够快。

我没有尝试过,但我假设从图像中读取像素值的成本更高,因为检索值不完全是
myArray[x][y]
,但必须对数据进行一些解析。话虽如此,我不知道它是否会明显变慢。如果你仍然需要图像,那么是的,它可以节省内存来回收它。我没有尝试过,但我认为从图像中读取像素值更昂贵,因为它不完全是
myArray[x][y]
检索值,但必须对数据进行一些解析。话虽如此,我不知道它是否慢了很多。如果你需要图像,那么是的,它可以节省内存来回收它。