分类: LINUX
2008-05-16 11:52:51
最近shell看得多了,写shell变得越来越郁闷,一个简单的2000次递归居然把机器弄得 hangup了,看看c效率,速度比shell强多了。决定从今天开始学c了。
下面是我测试的3个简单shell脚本,就是把我机器弄得挂掉那个。
#!/bin/sh
A1(){
local i=$1
if [ $i -eq 1 ];then
echo 1
else
local j=`expr $i - 1`
k=`A1 $j`
echo `expr $i + $k`
fi
}
A2(){
local i=$1
if [ $i -eq 1 ];then
M=1
else
A2 $(($i-1))
((M=$M+$i))
fi
}
A3(){
[ "$1" = 0 ] && return $?
local M=$1
A3 $(($M-1))
return $(($M+$1))
}
time A1 $1
time { A2 $1;echo $M; }
A3是一个概念,A1是挂掉机器的脚本,A2是我优化改进后的,快多了,但还是 ……
下面是我从 cnscn 那里看来的一个方法,在linux下调试c方便了不少,很有意思的,哈哈。
#-----------------------------------------------------------#
建立一个文件/usr/bin/cftest,吧这个脚本写里面,别忘了加上执行的权限。
一个c文件 a.c
#include
main(viod)
{
int i;
for(i=9;i<235;i++)
{
if((i % 9) == 0)
printf("this is %d\n",i);
}
}
方法1、 可以用 cftest a.c 来执行这个c文件。
方法2、 在c文件的开头引用那个脚本,就可以直接执行。
#!/usr/bin/env cftest
#include
main(viod)
{
int i;
for(i=9;i<235;i++)
{
if((i % 9) == 0)
printf("this is %d\n",i);
}
}
直接运行 ./a.c 很好玩吧。