2012年5月29日 星期二

Open RTMFP 伺服器架設教學

最近在使用Flash的P2P技術,找到了這一套免費的P2P status server,如果要用adobe的就要用FMS了

下面教大家怎麼安裝:

OpenRTMFP軟體需求:
1.lua 5.1版(不要用5.2的會出錯)
2.poco 1.4版
3.openSSL


請先安裝以下套件才可執行OpenRTMFP安裝
 1.gcc(lua需要)
     1-1.gcc
     1-2.gcc-c++
 2.unixODBC(poco需要)
 3.lua 5.1
 4.openSSL
 5.poco 1.4

poco 1.4 安裝
 1../configure
 2.make -s all
 3.sudo make -s install

LUA 5.1安裝
 1.make linux
 2.make install

OpenRTMFP安裝:
 1.進入RTMFP的lib目錄並執行make
  1.cd rtmfp/CurimusLib
  2.make
 2.進入RTMFP的Server目錄並執行make
  1.cd ../CurimusServer
  2.make
 
 執行:
  1.背景處理並使用預設port
   nohup ./CurimusServer &



FAQ:
 1.POCO安裝出現g++ command not found
  A:yum install gcc-c++
 2.LUA安裝出現/usr/bin/id: can not found -lreadline or -lxxxx
  A:使用ln建立動態link
   範例:
   2-1.cd /usr/lib64/
   2-2.ln -s readline.so.5 readline.so
  
   ln [-sf] 來源檔 目標檔
   ln -s readline.so.5 readline.so
    選項與參數:
    -s  :如果不加任何參數就進行連結,那就是hard link,至於 -s 就是symbolic link
    -f  :如果 目標檔 存在時,就主動的將目標檔直接移除後再建立!
   
 2.luaconf.h:275:31: error: readline/readline.h: No such file or directory
  luaconf.h:276:30: error: readline/history.h: No such file or directory
  A:yum install readline-devel
 
 3..sources/Script.h lua5.1/lua.h not found
  A:進入到有問題的檔案中修改"lua5.1/lua.h"改為"lua.h"就可以
   Script.h
   Script.cpp
   都會有該問題存在
   编辑Makefile,把-llua5.1修改为-llua
 4.編譯成功後執行出現錯誤:“error while loading shared libraries: libPocoFoundation.so.12”
  A:執行:
   32bit
    export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
   64bit
    export LD_LIBRARY_PATH="/usr/local/lib64:$LD_LIBRARY_PATH"

2012年5月8日 星期二

AIR 及 Android原生語言 效能測試

AIR Android原生語言 效能測試
測試方式:

使用相同For迴圈測試加總所需時間



測試程式碼(AS3):

var now:Date = new Date();

        var s1:Number, s2:Number, s3:Number, s4:Number, s5:Number;

        s1 = now.getTime();

        for(var i:int = 1 ; i < 10000001 ; i++){

                if(i == 10000000){

                        var time5:Date = new Date();

                        s5 = (time5.getTime() - s1);

                        t4.text = "千萬次花了" + s5.toString() + "毫秒";

                }else if(i == 1000000){

                        var time4:Date = new Date();

                        s4 = (time4.getTime() - s1);

                        t3.text = "百萬次花了" + s4.toString() + "毫秒";

                }else if(i == 100000){

                        var time3:Date = new Date();

                        s3 = (time3.getTime() - s1);

                        t2.text = "十萬次花了" + s3.toString() + "毫秒";

                }else if(i == 10000){

                        var time2:Date = new Date();

                        s2 = (time2.getTime() - s1);

                        t1.text = "一萬次花了" + s2.toString() + "毫秒";

                }

        }

}
 

測試數據:

Android模擬器(Android 2.2)

計算次數
Java原生(ms)
AIR(ms)
差異百分比
1萬次
8
14
1.75
10
79
33
0.417722
100
791
147
0.185841



實機測試(測試機種 SE Neo V Android 2.3)

計算次數
Java原生(ms)
AIR(ms)
差異倍數(AIR/Java)
1萬次
8
8
1
10
11
28
2.545454545
100
42
82
1.952380952



結論:

AIR在實機上比原生語言慢1倍,但實際觀察所耗時間(ms),還在可容許範圍內

如果使用AIR做複雜程式開發需考慮更好的效能及程式優化技巧