当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 最近在做一个很简单的STEREO->MONO的变换函数的时候遇到了循环效率的问题。
 

 

 ·从呼叫中心切入crm    »显示摘要«
    摘要: 目前,定位在服务管理的厂商,多数是由cti和呼叫中心厂商转型而来的。这类企业在做crm系统时,往往注重的仅是“呼叫中心系统+简单的客户管理与服务过程管理”,而更高级的现场管理、备件管理、服务知识库管理等则鲜有涉及, 真正意义上做服务管理系统的就少之又少了。   前两年,部分加入crm竞争战局的华南、成都、华东、北京、上海等地的crm小企业,由于市场迟迟不见好转,其中已......
 ·hibernate中的threadlocal    »显示摘要«
    摘要:今天学习hibernate,看到数据连接部分,看到一个threadlocal类,在网上看了这两篇文章。http://qszhuang.blogchina.com/blog/article_20407.72483.htmlhttp://www-900.ibm.com/developerworks/cn/java/j-threads/index3.shtml#h5450发现threadlocal是用来......


嵌入式计算中循环的优化
最近在做一个很简单的stereo->mono的变换函数的时候遇到了循环效率的问题.想了一下怎么优化之后,觉得有点意思,就写下来纪录一下吧.

算法的公式非常简单,mono = (lch + rch) / 2 【程序编程相关:动态创建TABLE的行与列

【推荐阅读:读书笔记之 C++ Primer(1)

stereo数据流中的数据是以[lch rch lch rch lch rch.....]这种格式存放的,一般来说,首先想到的变换方式是这样的 【扩展信息:拖放功能的实现

[code]

for (i = 0; i < mono_buffsize; i++){

 monobuffer[i] = (float)(stereobuf[i * 2] + stereobuf[i * 2 + 1]) / 2;

}

[/code]

可是,我的stereo缓冲区有5000个bytes,当然mono_buffsize的大小就是它的一般,2500个bytes.那么上面这段代码就需要循环运算2500次.而众所周知,循环是系统资源的最大杀手.我的程序也毫不客气的占用了将近20%的cpu资源.不得不进行优化.稍微想了一下,我把上面那段代码修改成下面的样子.

[code]

i = 0;

while (i < mono_buffsize){

 monobuffer[i++] = (float)(stereobuf[i * 2] + stereobuf[i * 2 + 1]) / 2;

 monobuffer[i++] = (float)(stereobuf[i * 2] + stereobuf[i * 2 + 1]) / 2;


...   下一页
 ·urlencode    »显示摘要«
    摘要:sub url_encode {my $text = shift;$text =~ s/([^a-z0-9_.!~*´() -])/sprintf "%%%02x", ord($1)/egi;$text =~ tr/ /+/;return $text;} sub url_decode {my $text = shift;$text =~ tr/\+/ /;$tex......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE