AJAX boardgame在Windows中运行良好,但在Linux中运行不好

AJAX boardgame在Windows中运行良好,但在Linux中运行不好,ajax,linux,dom,Ajax,Linux,Dom,最近我一直在玩一个叫做Empires的网络棋盘游戏。它在Windows下运行良好,但在Linux上运行速度非常慢 我问开发者为什么。他使用Linux,但他不知道。他怀疑DOM元素太多,但他不知道如何解决问题 Firefox和Google Chrome都很慢,所以这似乎不是浏览器的问题 我正在用Firebug和页面速度扩展测试我自己的网站,所以我想我应该在GamesByMail上试试。从传统web开发的角度来看,它实际上相当快——它在Linux上刚刚被打破 请所有熟练的Linux开发人员检查一下游

最近我一直在玩一个叫做Empires的网络棋盘游戏。它在Windows下运行良好,但在Linux上运行速度非常慢

我问开发者为什么。他使用Linux,但他不知道。他怀疑DOM元素太多,但他不知道如何解决问题

Firefox和Google Chrome都很慢,所以这似乎不是浏览器的问题

我正在用Firebug和页面速度扩展测试我自己的网站,所以我想我应该在GamesByMail上试试。从传统web开发的角度来看,它实际上相当快——它在Linux上刚刚被打破

请所有熟练的Linux开发人员检查一下游戏并给我们一些线索好吗


谷歌页面速度测试一个网站在性能方面遵循最佳实践的程度,而不是它的实际表现。如果该站点在Chrome中运行缓慢,请尝试,这将分析浏览器在该站点上的操作。比较windows和linux之间的输出。

编辑:

好的,这是一个可怕的设计。它装载数吨的GIF(每个区域2个),大小与运动场(947x622)相同,并覆盖它们。然后用鼠标在上面切换这两个选项。在任何情况下,我认为这都是性能不佳的原因

那有用吗?既然您知道了它是如何糟糕地实现的,那么它到底有什么关系呢?只需在windows上播放即可

原创帖子
好的,在windows上说一些东西快,在linux上说一些东西慢并不意味着什么。您可以在8gb四核上运行它,windows有一个巨大的磁盘,linux有一个上网本。这会使它变慢。所以告诉我们。。。这两台机器的技术区别是什么。我的猜测是linux机器的内存较少,而这个应用程序喜欢java和图形的大量内存。

只是一些额外的反馈:在Mac OS X Firefox中,游戏速度似乎也非常慢-在它冻结后不得不重新启动“fox”。。!哎哟

我是写了一个叫做“帝国”的“恐怖设计”的人:O

起初我知道这很有逻辑性,但我不知道自己陷入了什么境地。
最后,我知道存在性能问题(特别是在Mac和Linux上),我想我最好至少让它可玩,尽可能地修补它,并将它发布出来,这样我和一些朋友就可以玩这个游戏了

事实证明,随着游戏越来越接近第七纪元,性能变得非常糟糕。(棋盘上有这么多棋子)。Iain,ealier当我提到有太多DOM元素时,我指的是很多图像

GamesByMail.com背后的主要开发人员(他制作了非常棒的游戏,不要让帝国在他的游戏质量上愚弄你!)他提到,小型gif和板级gif之间的性能差别非常小,后者大多是透明的

问题是,试图克隆HoTW-2001导致使用了大量图像

我已经准备好进行一些优化,但还没有时间完成。(在发布之前,我需要大约12个小时来测试所有内容,即使这样,bug也很容易通过:(
但是,我确实计划:

  • 消除所有PNG(如果我还没有…其中有一个变量可以在GIF或PNG之间切换。我非常喜欢PNG的特性,但额外的通道使图像大小加倍:(
  • 关闭脉冲效应。
    我想通过这个来帮助识别“当前帝国”而不是同一玩家拥有的“以前的帝国”。问题是,对于大多数浏览器来说,动画太贵了:( (我知道,我可能应该使用flash或canvas标记,但Scott的API非常丰富和健壮……太多了,我自己无法实现)
所以,是的……我只需要放下我的屁股,开始至少上面的项目

特洛伊

PS-用于测试游戏的另一个URL可能是。您可以作为所有玩家玩整个游戏。

另一个想法

原始API更适合于使用平面颜色区域(如和二战)的游戏。因此,与其生成数千个包含斑点着色(使图像更大)的GIF,我可以:

  • 恢复为PNG,使用单一颜色,例如:蓝色,但透明度为30%,并让底层电路板提供阴影和纹理。或
  • 使用GIF,一种单一的平面颜色,没有阴影,并使用DOM属性将其显示为半透明(在某些地方已经使用一些不同的浏览器特定的DOM属性进行了此操作)。唯一的挑战是使其在视觉上看起来很好
这里可能的好处是减少每个图像请求传输的数据量,但仍然存在大量请求的问题

最后,有可能将此方法与spriting方法相结合,而不是从主地图(gimp图像)渲染数千个单独的图像,我将这些区域渲染为一个巨大的图像(每个区域周围都有额外的透明空间)

所以,我可以追求一些想法……呃,随着我的日程安排的开放:)


特洛伊

我今天一直在做一些分析。这是我这里的Epoch 7保存游戏的数据样本。非常接近最坏的情况,这是脉冲关闭,所以我开始想也许我可以摆脱脉冲,问题在别处

Function        Calls   Percent Own 
                                Time(ms) Time(ms)        File
mouseEvent()    658     4.69%   75.67   1596.14 GamesByEmail.js (line 4150)
onmousemove     576     1.07%   17.32   1575.29 26 (line 1)
mouseMove()     576     1.18%   19.04   933.05  Game.js (line 2122)
findAtPoint()   576     4.14%   66.9    594.48  EmpiresT...ritory.js (line 415)
containsPoint() 16217   6.00%   96.91   518.51  GamesByEmail.js (line 5676)
normal()        16217   14.65%  236.61  421.59  Foundati...ometry.js (line 485)
cancelScroll()  658     21.51%  347.38  347.38  GamesByEmail.js (line 4109)
mouseMoveHidePrevious()
                576     0.18%   2.94    266.65  Game.js (line 2153)
updateMouseHtml()61     0.16%   2.64    256.51  Game.js (line 2178)
updateMouseHtmlPosition()
                639     11.69%  188.87  216.47  GamesByEmail.js (line 3783)
setMouseHtml()  61      0.53%   8.58    206.75  GamesByEmail.js (line 3767)
containsPoint() 16217   5.78%   93.41   144.65  Foundati...ometry.js (line 312)
setInnerHtml()  61      1.99%   32.19   116.9   GamesByEmail.js (line 2578)
toString()      183     6.40%   103.33  103.33  Foundation.js (line 476)
washHtml()      61      0.10%   1.54    84.71   GamesByEmail.js (line 2566)
insertStyleForElements()
                122     0.40%   6.49    83.17   GamesByEmail.js (line 280)
mousePoint()    578     2.57%   41.53   67.59   GamesByEmail.js (line 4119)
containsXY()    16217   3.17%   51.24   51.24   Foundati...ometry.js (line 308)
getElement()    1008    1.98%   31.98   41.18   Foundation.js (line 507)
normal          16411   2.50%   40.34   40.34   Foundati...ometry.js (line 487)
Point()         1155    1.88%   30.34   36.38   Foundati...ometry.js (line 15)
canAttack()     614     0.30%   4.79    35.41   Empire.js (line 477)
... 
我所看到的表明,所有的时间都在mouseMove及其子节点中消耗殆尽。 确定鼠标在哪个区域上通常是一个O(n)任务。迭代每个区域的每个多边形,直到我们找到一个包含鼠标X,Y的多边形。(像“normal()”之类的东西是该过程的一部分。它也使用边界框,因此在那里进行了一些优化)

但是我不明白为什么在十月底这种表现会变得如此糟糕