通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
程式语言效率分析(2)
责任编辑:admin   更新日期:2005-8-6
二、C

    C近来极受美国各系统公司的推崇,我们特以之与组合语言作个比较,但不幸的是在指令的精简上,就显得力不从心,不像组合语言那样可以斤斤计较。
    因此,我们祇能就点阵移位、查小表及查总表的方式,测试其效率。首先,利用查大表的方式如下:

  1: main()
  2: {
  3:     unsigned char     s[24][3];
  4:     unsigned short  tab[256], d[48][3], count;
  5:     register short  i,j,k;
  6:
  7:     for (count = 0; count < 10000; count++)
  8:     {
  9:         k = 0;
 10:         for (i = 0; i < 24; i++)
 11:         {
 12:         for (j = 0; j < 3; j++)
 13:            d[k][j] = d[k + 1][j] = tab[s[i][j]];
 14:         k += 2;
 15:         }
 16:     }
 17: }

    程式制作时间10分钟,较组合语言稍快;占用空间4575字元,则大了三倍,至于执行速度为18秒,慢了七倍之多。
    再换个方法,试一试查小表如次:
  1: main()
  2: {
  3:     unsigned char    i,j, s[24][3], d[48][6], tab[16];
  4:     unsigned short  count;
  5:     register short  k, l, x;
  6:
  7:     for (count = 0; count < 10000; count++)
  8:     {
  9:         k = 0;
 10:         for (i = 0; i < 24; i++)
 11:         {
 12:         l = 0;
 13         for (j = 0; j < 3; j++)
 14:         {
 15:             x = s[i][j];
 16:          d[k][l] = d[k + 1][l] = tab[x & 0360 >> 4];
 17:          d[k][l+1] = d[k + 1][l + 1] = tab[x & 017];
 18:             l += 2;
 19:         }
 20:         k += 2;
 21:         }
 22:     }
 23: }
    占用空间为4,693 字元,比组合语言大了五倍;速度为30秒,则慢了四倍多。这证明了组合语言的灵活性,在空时效率交换的技术运用下,可以选择最有利的条件。再看利用位置的方式,结果如何?

  1: main()
  2: {
  3:     unsigned char          ss[24][3];
  4:     unsigned short       dd[48][3];
  5:     int              i, k, count;
  6:     register short       d, j;
  7:     register unsigned char   s;
  8:
  9:     for (count = 0; count < 10000; count++)
 10:     {
 11:         k = 0;
 12:         for (i = 0; i < 24; i++)
 13:         {
 14:         for (j = 0; j < 3; j++)
 15:         {
 16:             s = ss[i][j];
 17:             d = 0;
 18:             if (s & 01)
 19:             d |= 03;
 20:             if (s & 02)
 21:             d |= 014;
 22:             if (s & 04)
 23:             d |= 060;
 24:             if (s & 010)
 25:             d |= 0300;

[1] [2] [3] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程