【C/C++基础知识】经典的效率程序
1) 人替机器运算
写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
复杂算法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
当n很大的时候这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,把程序优化一下。
long fn(long n)
{
long temp = 0;
int j = 1,i = 1,flag = 1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
while(j<=n)
{
temp = temp + i;
i = -i;
i > 0 ? i++ : i--;
j++;
}
return temp;
}
不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,运算时间上缩短了很多,而代价仅仅是增加了一个整型变量。
这个程序确实在效率上有的很大的提高,但这个程序仍然不能达到要求,要给出更优的方案。
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n / 2) * (-1);
else
 
相关文档:
关于C语言内存方面的话题要真说起来的话那恐怕就没头了,所以本文仅仅是一个浅谈。
关于内存问题
不同平台之间有一定的区别。本文所指的平台是x86的Linux
平台
用C语言做程序(其实其他语言也一样),不仅要熟悉语法,其实很多相关的背景知识也很重要。在学习和研究C语言中内存分配的问题前,首先要了解一下Linux分配给 ......
计算线程执行某项任务消耗的时间时,许多开发人员会调用GetTickCount/GetTickCount64编写如下的代码:
// Get the current time (start time)
ULONGLONG qwStartTime = GetTickCount64();
// Perform complex algorithm here
// Subtract start time from current time to get duration
ULONGLONG dwElapsedTime = Get ......
在servlet里设置了属性值 request.setAttribute("MENU", menu);
doPost()或者doGet()里做跳转:
代码
getServletConfig().getServletContext().getRequestDispatcher(
mainpage).forward(request, response);
在mainpage页面直接获取可以用 request.getAttribute("MENU");
若用JSTL代码为 ......
简述
一 列文件清单
二:执行程序
三:显示数据
四:断点(breakpoint)
五.断点的管理
六.变量的检查和赋值
七. 单步执行
八.函数的调用
&nb ......
最近因为研究一个东西,并且在很久以前就想把python好好看看。正好满足我的好奇心。我每天上班做得游戏都是用lua,也是一门很强大的脚本语言。可能我更喜欢python的缩进区分和面向对象吧。 今天只写一个简单的例子。一个简单的python脚本,就一个函数,用C/C++去调用。可能这也是作为程序来说最关心的一件事。所以我的pytho ......