Ami*_*mit 0 java apache-flex flash coldfusion blazeds
我是Flex开发的新手,在创建一个新的Mobile项目时,它询问我是否要将它连接到某些服务器并给我四个选项`ColdFusion,PHP,Java和blazeDS).
我一直在java工作,而不是一个PHP家伙,我会简单地选择Java并忽略所有其他.但由于效率是我目前项目中的一个重要问题,我不想冒险.
根据你的哪一个是最好的选择,即ColdFusion,BlazeDS或Java,考虑到大多数时候我将在数据库中存储大量二进制数据即音频/视频文件等这一事实?
既然你是一个Java的家伙,你可以立即删除PHP选项:它的AMF远程选项比其它3慢,你不想学一门新的语言.
这给我们留下了Java,CF和BlazeDS,它们基本上都是Java的风格和性能方面,它们可以非常相似(如果使用正确:请参见下文):
但是你需要知道一件事.CF中的实例化是非常昂贵的 - 我的意思是比Java慢500倍 - 所以如果你有大的列表它肯定是nono.除非你用我碰到的伎俩到几个月前:不是实例化一个对象,你必须创建一个"结构",给它一个"__type__"属性.
例如,而不是:
var instance = new path.to.MyClass();
//or
var instance = createObject("component", "path.to.MyClass");
Run Code Online (Sandbox Code Playgroud)
像这样做:
var instance = structNew();
instance["__type__"] = "path.to.MyClass";
Run Code Online (Sandbox Code Playgroud)
和ColdFusion一样快 - 或者甚至稍微快一点 - 然后是Java.
我有一些基准来支持这一点.此图像比较了在某些语言中创建50000个实例所需的时间.(我实际上是想告诉我的老板CF真的很糟糕.)CF8(不在图表中)甚至慢了100倍.

然后我将AMF序列化和'typed struct'(如前所述)添加到列表中,结果如下:

某些列名称在图形中丢失,但左侧的第二列是纯Java选项.因此,使用这种方法,CF9实际上似乎比Java更快.