主题:c2flash 如何加速
zhaolei_swf
[专家分:0] 发布于 2012-05-17 23:55:00
小弟好不容易找到了这个把c/c++移植到flash上的工具,但是运行的时候画面太慢了。因为他解释执行386汇编指令的。有没有什么加速的方法?
沙发
zhaolei_cpp [专家分:0] 发布于 2012-05-17 23:57:00
嗯,如果浪费时间的代码是可以并行计算的,那么可以把这些工作交给下面两个库函数去做。
CBlockMemory::ParallelCompute 和 CBlockMemory::ParallelComputeIf
这里只说 ParallelCompute 他们的原型是:
static int ParallelCompute(CBlockMemory & data1,int data1_start,int data1_step,CBlockMemory & data2,int data2_start,int data2_step,BOOL sign,int width,BOOL float_point,CBlockMemory & data3,int data3_start,int data3_step,int data3_width,EParallelOperator operator_,int count);
这个函数的参数较多,为了能描述清楚这两个函数的作用,我还是举例子说明吧。
下面是求一个整型数组的和的代码
int data[]={0,1,2,3,4,5,6,7,8,9};//要求和的数组
int sum;//存放结果
sum=0;
//ParallelCompute只接受CBlockMemory,所以要转换一下
CBlockMemory data_buffer;
data_buffer.Write(0,data,sizeof(data));
CBlockMemory sum_buffer;
sum_buffer.Write(0,&sum,sizeof(sum));
//利用ParallelCompute求和
ParallelCompute(
sum_buffer,//data1
0,//data1_start
0,//data1_step
data_buffer,//data2
0,//data2_start
sizeof(data[0]),//data2_step
TRUE,//sign
sizeof(sum)*8,//width
FALSE,//float_point
*(CBlockMemory*)NULL,//data3 没有用到data3
0,//data3_start
0,//data3_step
0,//data3_width,
PARALLEL_OPERATOR_ADD,//operator_
sizeof(data)/sizeof(data[0]));//count
sum_buffer.Read(&sum,sizeof(sum),0);