C语言最快吗

C语言最快吗

 

       很多人认为C语言的运行效率是除汇编之外最高的语音,有段时间我也这么认为过,但我编程并不很在乎运行效率,因为很多时候并不需要高效。但昨天我写的脚步解析器运行结果,让我彻底放弃C语言是最高效的语言。

      各种编程语言,无非就是解释顺序、判断和循环三个逻辑,谁解释的好,谁的效率就高,有些时候同样表意的代码,脚本都比C语言高效。但有些时候,你又不得不佩服C语言的设计者,他可以让青出于蓝而胜于蓝。昨晚我测试我的脚本解析器,解析if else,结果在尝试1000次的时候脚本解析居然比C语言调用函数还快。本身我的脚本解析器就是使用C语言编写的。

故而发表文章求解释,如多本脚本感兴趣,可以发邮件到wjh_2010@163.com与我联系。


 我的脚本解释如下:

真假判断:字符串为””为假,其他情况为真。

语句结束:每条语句以换行结束

如何理解:脚本最简单的理解方式就是将其展开,除了关键字就是执行命令

测试结果如下:

脚本执行完成 2776ms
测试完成  3011ms
执行1000次,多-235ms


具体测试脚本和测试代码如下:

脚本scriptParser-2.sp

//测试条件语句
 
if print 123
{
       print 上面有输出123
}
else
{
       print 456
}
 
print 不能输出 456
 
if 789
       print 789
else
       print abc
print 输出789 不能输出abc
 
if wjh
{
       print wjh
}
else
{
       print lumei
}
 
if
{
       print 不能输出lumei
}
else
{
       print 输出lumei
}
 
if abc
{
       if 123
              printqwe
}
 
if
{
}
else if zxc
       print zxc
      
       if 1=1
       print 1111
       else
       print 222
      
       if a=0
       print 1111
       else
       print222
      
if
{
       if  aaa
       {
              if
              {
              }
              else
              {
                     print jkl
              }
       }
}
else
{
       print nm,
}



 

测试代码:

void TestScript_1()
{
       //测试条件语句
       if (print("123"))
       {
              print("上面有输出123");
       }
       else
       {
              print("456");
       }
 
       print ("不能输出456");
 
       if (true)//(strlen("789"))
              print ("789");
       else
              print ("abc");
       print ("输出789 不能输出abc");
 
       if (true)//(strlen("wjh"))
       {
              print(" wjh");
       }
       else
       {
              print ("lumei");
       }
 
       if (false)//(strlen(""))
       {
              print ("不能输出lumei");
       }
       else
       {
              print ("输出lumei");
       }
 
       if (true)//(strlen("abc"))
       {
              if (strlen("123"))
                     print ("qwe");
       }
 
       if (false)//(strlen(""))
       {
       }
       else if (strlen("zxc"))
              print ("zxc");
 
       if (true)//(strlen("1=1"))
              print ("1111");
       else
              print ("222");
 
       if (true)//(strlen("a=0"))
              print ("1111");
       else
              print ("222");
 
       if (false)//(strlen(""))
       {
              if (true)// (strlen("aaa"))
              {
                     if (strlen(""))
                     {
                     }
                     else
                     {
                            print ("jkl");
                     }
              }
       }
       else
       {
              print ("nm,");
       }
}
int _tmain(int argc, _TCHAR* argv[])
{
       ScriptParser  parser;
 
       do
       {
              //初始化脚本命令
              if (!parser.InitScriptParser(".\\"))
              {
                     printf("初始化脚本命令失败\n");
                     break;
              }
#define  TEST_COUNT 1000
 
              //执行脚本解析
              DWORD st = GetTickCount();
              for (int i=0;i<TEST_COUNT;i++)
              {
                     //printf("======================================\n");
                     parser.ExecuteParsingFile(".\\scriptParser-2.sp");
              }
              DWORD el = GetTickCount() - st;
             
 
              st = GetTickCount();
              for (int i=0;i<TEST_COUNT;i++)
              {
                     TestScript_1();
              }
 
              DWORD el1 = GetTickCount() - st;
              printf("脚本执行完成 %dms\n",el);
              printf("测试完成 %dms\n",el1);
              printf("执行%d次,多%dms\n",TEST_COUNT,el - el1);
       } while (false);
      
 
       getchar();
       return 0;
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值