AJAX boardgame在Windows中运行良好,但在Linux中运行不好
最近我一直在玩一个叫做Empires的网络棋盘游戏。它在Windows下运行良好,但在Linux上运行速度非常慢 我问开发者为什么。他使用Linux,但他不知道。他怀疑DOM元素太多,但他不知道如何解决问题 Firefox和Google Chrome都很慢,所以这似乎不是浏览器的问题 我正在用Firebug和页面速度扩展测试我自己的网站,所以我想我应该在GamesByMail上试试。从传统web开发的角度来看,它实际上相当快——它在Linux上刚刚被打破 请所有熟练的Linux开发人员检查一下游戏并给我们一些线索好吗AJAX boardgame在Windows中运行良好,但在Linux中运行不好,ajax,linux,dom,Ajax,Linux,Dom,最近我一直在玩一个叫做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非常丰富和健壮……太多了,我自己无法实现)
- 恢复为PNG,使用单一颜色,例如:蓝色,但透明度为30%,并让底层电路板提供阴影和纹理。或
- 使用GIF,一种单一的平面颜色,没有阴影,并使用DOM属性将其显示为半透明(在某些地方已经使用一些不同的浏览器特定的DOM属性进行了此操作)。唯一的挑战是使其在视觉上看起来很好
特洛伊我今天一直在做一些分析。这是我这里的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()”之类的东西是该过程的一部分。它也使用边界框,因此在那里进行了一些优化)
但是我不明白为什么在十月底这种表现会变得如此糟糕