小编n a*_*n a的帖子

JS字符串/数字和垃圾收集

TL;博士

以下代码行是否创建了一个对象(如JavaScript String对象或JavaScript Number对象)来组合字符串原语和数字?

var scouterSays = "powerlvl" + 9001;
Run Code Online (Sandbox Code Playgroud)

完整问题

我正在用JavaScript编写游戏引擎,并且我正在努力对垃圾收集非常小心.我已经阅读了http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascripthttp://buildnewgames.com/garbage-collector-friendly-code /这是非常有帮助的.我已经实现了对象池并且尽可能避免了数组操作以支持链表.

现在,如果我理解正确,如果我在原始字符串上调用字符串方法,将创建一个字符串对象并替换我的原始字符串.示例是length,substring,indexOf等.由于我使用字符串来识别带有对象池的对象类型,因此我担心每次从池中提取对象时都会创建垃圾.

简而言之,以下是否会导致创建对象(如JavaScript String对象或JavaScript Number对象)?

var byteSize = 4;
var objectType = "msg" + byteSize; //does this create a JS String/Number object?
var message = gameengine.pool.acquire(objectType);
Run Code Online (Sandbox Code Playgroud)

另外,一个相关的问题,将使用按位运算(如~~()或<<或>>)也会导致创建一个JavaScript对象?

javascript string garbage-collection

6
推荐指数
1
解决办法
714
查看次数

Mercurial和xcuserdata,.ds_store和.git

Mercurial noob在这里.我在处理mercurial和xcuserdata和.ds_store以及.git等文件时遇到了很多麻烦.我的智慧结束了.

目前的设置有一个中间回购,就像一个中间人.我们推动并拉动它的变化.

之前推送的提交包括在创建.hgignore文件之前包含不需要的文件(xcuserdata,git,ds_store).这引起了噩梦.

我尝试了什么:

我试图忽略这个问题并让合并处理它,但是由于冲突导致每次推送导致中央仓库上的分支(推送中的冲突没有在终端中显示,所以我没有机会在推送时合并)和腐败项目文件,它导致合并工具如filemerge和kdiff3挂起.

我尝试制作一个本地的.hgignore文件并使用hg忘记xcuserdata来停止跟踪那些东西,但它仍然推送并拉出那些不需要的文件.

我想要发生什么:

我希望中央仓库删除那些不需要的文件.每个开发人员仍应拥有自己的本地版本的这些文件.新提交将忽略这些文件.我该怎么做?

谢谢

merge mercurial xcode hgignore

5
推荐指数
1
解决办法
1293
查看次数

JavaScript和处理浮点确定性

我正在寻找使用回滚网络代码构建一个浏览器多人游戏,该网络代码在客户端上运行确定性模拟.在遇到浮点路障之前,我已经在Flash中对网络代码进行了原型设计.

基本上,根据我的理解,Flash中的整数数学是通过将ints转换为Numbers,进行数学运算,然后转换回来完成的int.它显然更快,但这意味着不可能在不同的计算机体系结构中进行确定性数学运算.

在我将所有鸡蛋放入JavaScript篮子之前,我想问几个问题.

  1. JavaScript中所有主流浏览器都有真正的整数运算吗?或者做一些浏览器做Flash事件并转换为浮点数/双精度数来进行数学运算然后再转换回int?

  2. 在不同的计算机体系结构中,是否有类似于BigDecimalBigNum确定数学运算的东西?只要在合理范围内,我不介意一些性能损失.如果没有,是否有一些JavaScript定点库可以解决我的问题?

  3. 这是一个很长的镜头,但是有没有HTML5 2D游戏引擎,它具有像x/y位置和碰撞之类的东西的确定性数学?游戏引擎列表至少可以说是压倒性的.我对从头开始构建一个确定性的跨浏览器兼容引擎感到不安,但这可能就是我必须要做的.

注意:根据响应从HTML5编辑到JS.为我缺乏知识而道歉.

javascript floating-point html5 point multiplayer

5
推荐指数
1
解决办法
811
查看次数