社区
JavaScript
帖子详情
[高手请进]JS星遭遇速度瓶颈
xvlv
2004-07-07 11:29:07
http://www.51js.com/viewthread.php?tid=18944&highlight=&page=28
有兴趣的朋友可以看看能否解决?
...全文
352
25
打赏
收藏
[高手请进]JS星遭遇速度瓶颈
http://www.51js.com/viewthread.php?tid=18944&highlight=&page=28 有兴趣的朋友可以看看能否解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
i三千
2004-07-12
打赏
举报
回复
n
SnowF4
2004-07-12
打赏
举报
回复
xvlv(xvlv) ( ) 兄,以后贴代码的时候要检查一下!你那两段比较的程序怎么是一模一样的啊??还是我太外行了?
xvlv
2004-07-12
打赏
举报
回复
http://220.134.133.114/operation_studio/studiogame.html
xvlv
2004-07-12
打赏
举报
回复
你注意看一下,代码前有//的应该表示注释吧,所以是不同的。
zlj113
2004-07-09
打赏
举报
回复
帮你顶了,玩过你的JS星际,都说你很强呀,希望你能早日解决问题。
kingdomzhf
2004-07-09
打赏
举报
回复
创意强
dullwolf
2004-07-09
打赏
举报
回复
http://www.adr.gov.cn/download/panyuguang/xq/vml.asp
人生,是大写的,签字,呜,嗷,UP!~~~~~
___ __ __
/ __ \ __ __ /\ \ /\ \
/ /_/\ \ /\ \ /\ \\ \ \ \ \ \
/\ \ \ \ \\ \ \ \ \ \\ \ \ \ \ \
\ \ \_\_\ \\ \ \_\_\ \\ \ \___\ \ \___
\ \_______\\ \_______\\ \____\\ \____ \/_______/ \/_______/ \/____/ \/____/
__ ___ ____ __ ________
/\ \ |\ \| _\ _______ /\ \ /\ _____ \ \ \ \| \\\ \/ /\ ___ \\ \ \ \ \ \___/_
\ \ \ | \\\ \ \ \ \_/\ \\ \ \ \ \ ____\
\ \ \| |\ \/ \ \ \ \\_\ \\ \ \__ \ \ \___/
\ \___|\\___/| \ \______\\ \____\\ \___\
\|___| |___|/ \/______/ \/____/ \/___/
xvlv
2004-07-09
打赏
举报
回复
-----最新推出:星际争霸online-----
http://starcraft.51ym.com/sc/
-----JS游戏开发基地-----
http://starcraft.51ym.com/home/
星际争霸online源代码(希望大家尊重幻宇的劳动成果)
http://starcraft.51ym.com/download/jssc_online.rar
emu_ston
2004-07-09
打赏
举报
回复
想看看造成瓶颈的代码,帖出来大家想想有没有更快的实现。
flash试过了,applet试过没有呢?
xvlv
2004-07-09
打赏
举报
回复
怎么将贴子自动提前呀?
xvlv
2004-07-09
打赏
举报
回复
以下是关于幻宇今天在无忧的发贴
奉劝大家在关键运算处,千万不要使用类,js星际最大失败之处在于此
偶然做了个实验,结果另人大吃一惊,终于揭开了js星际效率低下的内幕,根本原因就是因为使用了类!!!
以下是循环20000次的使用点类赋值的代码,顺便说一下,点类是一个较简单的类
<script>
var d=new Date(),d1=d.valueOf()
var a=new Array(),p=new pt()
for(i=0;i<20000;i++){
//a.x=3
//a.y=4
p.setv("3,2")
}
var d=new Date(),d2=d.valueOf()
alert("使用点类赋值,耗时"+(d2-d1)+"ms")
function pt(x,y){
this.setv=function(x,y){
if(y!=null){
this.x=parseInt(x)
this.y=parseInt(y)
}
else{
var a=x.split(",")
this.x=parseInt(a[0])
this.y=parseInt(a[1])
}
this.v=this.x+","+this.y
}
if(x!=null)
this.setv(x,y)
}
</script>
作为比效,这是普通数组赋值,达到同样功能的代码
<script>
var d=new Date(),d1=d.valueOf()
var a=new Array(),p=new pt()
for(i=0;i<20000;i++){
a.x=3
a.y=4
//p.setv(3,2)
}
var d=new Date(),d2=d.valueOf()
alert("使用数组赋值,耗时"+(d2-d1)+"ms")
function pt(x,y){
this.setv=function(x,y){
if(y!=null){
this.x=parseInt(x)
this.y=parseInt(y)
}
else{
var a=x.split(",")
this.x=parseInt(a[0])
this.y=parseInt(a[1])
}
this.v=this.x+","+this.y
}
if(x!=null)
this.setv(x,y)
}
</script>
看到了吧,同样的功能,使用类耗时巨大
dullwolf
2004-07-09
打赏
举报
回复
js的运算效率是高于asp?
你是想说js脚本比vbs脚本速度快吧?
不可能!
是你的代码没写好而已。
差别最大的就是数组,你用循环写10万长度的数组测试一下,vbs比js快n百倍
zwhbin
2004-07-08
打赏
举报
回复
这个问题我是无能为力了,顶一下吧
dropship
2004-07-08
打赏
举报
回复
可以将贴子提前的
monkeyhjl
2004-07-08
打赏
举报
回复
强!
顶!
htl
2004-07-08
打赏
举报
回复
顶一下
hotmanhh
2004-07-08
打赏
举报
回复
强啊,讨论这么高深的问题
帮你顶一个,虽然我根本搞不懂,唉
xvlv
2004-07-07
打赏
举报
回复
汗,管理员应该修改一下程序,把新贴和旧贴隔开一下,至少也应该让新贴排在前面半天时间
xvlv
2004-07-07
打赏
举报
回复
先声明一下,那程序作者可不是我,呵呵
我把大致的内容贴出来吧
使用的是自创的的“交点法寻径”,在js上表现不错,可以一次性给十几个单位寻径;在as中不行,只能给一个单位寻径,距离远了还很慢,可见js的运算效率是高于as的
现在改用flash开发星际online后,遇到了与js同样的问题,在多人同时移动时速度成几何级下降。这就是用脚本开发此类游戏的最大问题,cpu占用率奇高,其实cpu只用一小部分用于脚本的运算,大部分资源都消耗在图形的绘制上了,这个问题很难解决也很难回避啊
本来以为flash表现会好些,还是一样,郁闷死了,没有心情再扩展游戏功能了。如果哪位兄台有这方面的好方法,可一定得告诉我一声哦
我这几天也在反思这个问题,并做了些试验
1.在flash中,平缓移动一张800*600的大位图,cpu占用率立刻升到100%,而在js中,只会升到60%左右
2.如果位图移动出屏幕之外,两者cpu占用率很快降到5%以内
以下的试验只针对js:
3.如果该位图是普通彩图,cpu占用率如上所述有60%左右;而如果该位图为纯黑块,cpu占用率只有5%以下,可见cpu占用率和图片色彩或图片复杂度有绝对关联
4.多个位图同时移动,即使位图都很小(10*10以下),cpu占用率也会大幅增加。所以窗口重绘cpu占有率与重绘数量也有很大关系。
结论是:不管在js中还是在flash中,都需要合理分配动画,尽量不移动大背景,避免同时移动多个物体,使用卡通图形减少图片复杂程度,减小显示区尺寸,都可以有效降低cpu占用率,保证动画的流畅程度
只是这个结论也决定了,用脚本做星际,虽然编程方法已经实现,但是我们还必须在以下方法中选择:要不大大减小显示区尺寸,要不使用activex控件,要不干脆等到html支持directx加速的那一天
blasterboy
2004-07-07
打赏
举报
回复
看了一下,很佩服你得说
嗯,兄弟加油。
在给你顶一下!!
加载更多回复(5)
从程序员到项目经理
“从程序员到项目经理”,这个标题让我想起了很久以前一本书的名字《从Javascript到Java》。然而,从Javascript到Java充其量只是工具的更新,而从程序员到项目经理,却是一个脱胎换骨的过程。从Javascript到Java,是...
有哪些值得推荐的数据可视化工具?
商业转载请联系作者获得授权,非商业转载请注明出处。 谢邀。本答案提要:1.plotly 2.R ggplot23.无需编程语言的工具(7个)4.基于JavaScript实现的工具(8个)5.基于其他语言的工具(5个)6.地图数据可视化工具(7...
阿里P8整理的Java面试资料, 助你轻松进大厂^_^
高手
: 多线程环境下, 在程序中不做任何同步干预操作的情况下,这个方法或者对象的执行/修改都能按照预期的结果来反馈,那么这个类就是线程安全的。 实际上,线程安全问题的具体表现体现在原子性、可见性、有序性 1...
面对 2017 的轻狂和多疑
凌晨开始写, 我都有点梦游了, 有不对的地方请谅解. 过去一年互联网上看到过好多关于中国制造的赞誉的声音,比如手机行业的崛起, 比如陆续披露的各种超级工程, 以及在国外的成就,中国中低端制造业简直称霸全球了, 相比...
这一年,这些书:2020年读书笔记
假如宿主是人类,就疏散场所内的人群,关进监狱隔离。假如宿主是动物,就杀死并焚烧尸体。然后喷洒化学药剂并熏蒸消毒。 生命体这台机器内的细胞一旦停止运转,就不可能重新启动了。机体会不可逆转地腐败,落向紊乱...
JavaScript
87,904
社区成员
224,614
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章