为什么PhoneGap似乎比Titanium更快?

pan*_*ake 3 iphone performance titanium ios cordova

我正在尝试衡量一些跨平台解决方案的执行性能,其中包括:Titanium和PhoneGap.

所以这是我的性能测试器的Titanium版本的一个例子,它非常简单,但我只是想了解我的代码执行速度有多快:

var looplength;
var start1;
var start2;
var end1;
var end2;
var duration1;
var duration2;
var diff;
var diffpiter;
var power;
var info;

for (power = 0; power < 24; power++) {
  looplength = Math.pow(2, power);

  start1 = new Date().getTime();
  for (iterator = 0; iterator < looplength; iterator++) {a=iterator;b=iterator;}
  end1 = new Date().getTime();

  start2 = new Date().getTime();
  for (iterator = 0; iterator < looplength; iterator++) {a=iterator;}
  end2 = new Date().getTime();

  duration1 = end1 - start1;
  duration2 = end2 - start2;
  diff      = duration1 - duration2;
  diffpiter = diff / looplength;

  info={title:'2^' + power + ' ' + diffpiter};
  tableView.appendRow(Ti.UI.createTableViewRow(info),{animated:true});
}
Run Code Online (Sandbox Code Playgroud)

PhoneGap版本是相同的,除了最后两行被替换

document.write('2^' + power + ' ' + diffpiter + '<br />');
Run Code Online (Sandbox Code Playgroud)

两者都在iPhone 4S上执行.我已经多次运行测试,以消除错误.

在所有神圣的名称中,Titanium版本如何测量~0.0009每次迭代的毫秒数,而PhoneGap版本测量~0.0002每次迭代的毫秒数?

Titanium应该编译我的javascript代码,所以我希望它更快.在这种情况下,它至少慢4倍!我不是性能测试方面的专家,但我设计的测试应该至少是远程准确的......

感谢您提供给我的任何提示.

小智 7

Titanium不会将javascript代码转换为objective-c.Titanium只是使用javascript to objective-c桥接来与objective-c iOS框架(最重要的是用户界面对象)进行通信.更合适的比较是编码钛的用户界面元素(按钮,标签,窗口,视图),操纵它们并使用phonegap中的html,css,图像按钮.

Phonegap也使用它自己的桥梁,如果你知道java或objective-c,你可以使用插件来使用本机用户界面元素和iOS或Android的其他Native功能.

http://zsprawl.com/iOS/2012/05/navigation-bar-with-nativecontrols-in-cordova/