`
luowei31
  • 浏览: 78445 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一些简单编程技巧的总结(一)

阅读更多

  技巧:程序应以类似RISC(精简指令系统计算机)的形式来编写。换句话说,尽量简化你的代码,而不是使它更复杂。处理器特别喜欢简单指令,而不是复杂的指令,你的程序可以长些,但应尽量使用简单指令,使程序相对于编辑器来说更加简单些。例如,不要编写类似下面的程序:

  if((x+=(2*buffer[index++])>10)
  {
   //进行工作
  }//结束

  应这样做
  x+=(2*buffer[index]);
  index++
  if(x>10)
  {
   //进行工作
  }//结束if


  技巧:尽量使用32位变量而不用8位变量或16位变量,Pentium和之后的处理器全部都是32位的,这就意味着它们并不喜欢8位或16位的数据字符,实际上,更小的数据可能会由于超高速缓存和其他相关的内存寻址异常而使速度下降,例如,读者可能创建一个如下所示的结构:
  struct CPOINT
  {
   short x,y;
   unsigned char c;
  }//结束CPINT
  尽管这个结构看上去很好,但实际并非如此!首先,结构本身目前是一个5字符长的结构——2个short+1个char=5。这实际上是一个很差的设计,这将导致内存地址崩溃。更好的结构形式如下:
  struct CPOINT
  {
   int x,y;
   int c;
  }//结束CPINT

  技巧:使用内联功能。通过使用内联指令来完全摆脱调用功能甚至能够改善上面的技巧。内联指令不调用函数,而指示编译器将被调用函数代码放在需要调用该函数的最佳位置,这样做会使程序变得更大,但却提高了运行速度。下面是一个实例。
  inline void Plot_I (int x,int y,int color)
  {
   //在屏幕上画一个点像素
   video_buffer[x + y * MEMORY_PITCH] = color;
  }//结束Plot_I

  技巧:不要怕使用全局变量,许多视频游戏不使用大量的带有形参的、与时间相关的函数,而是使用一个全局变量来代替,例如一个函数的代码如下:
  void Plot(int x,int y,int color)
  {
   //在屏幕上画一个点像素
   video_buffer[x + y * MEMORY_PITCH] = color;
  }//结束Plot
  函数体运行的时间小于函数调用所需的时间。这是由于参数压入和弹出堆栈造成的。在这种情况下,更好的方法可能是创建一个全局变量,然后在调用前进行赋值,像下面一样:
  int gx,gy,gz,gcolor;//定义一些全局变量
  void Plot_G(void)
  {
   //使用全局变量来画一个点像素
   video_buffer(gx + gy * MEMORY_PITCH] = gcolor;
  }//结束Plot_G

  技巧:使用内联功能。通过使用内联指令来完全摆脱调用功能甚至能够改善上面的技巧。内联指令不调用函数,而指示编译器将被调用函数代码放在需要调用该函数的最佳位置,这样做会使程序变得更大,但却提高了运行速度。下面是一个实例。
  inline void Plot_I (int x,int y,int color)
  {
   //在屏幕上画一个点像素
   video_buffer[x + y * MEMORY_PITCH] = color;
  }//结束Plot_I
  注意:这里并没有使用全局变量,因为编辑器有效运行了相同类型数据的别名,但是全局变量迟早会派上用场,如果在函数调用时,一个或两个形参已改变,由于没有重新加载,所以旧的参数值有可能仍被使用。

  技巧:按照这种方式来编写代码有两个原因,首先,它允许调试程序在代码各部分之间放置断点;第二,这将更易于编译器向Pentium处理器传送简单指令,这样将使处理器使用更多的执行单元并行地处理代码。复杂的代码就比较糟糕。

  对于简单的、是2的倍数的整数乘法运算,应使用二进制移位运算。因为所有的数据在计算机中都以二进制存储,位组合向左或右移动就等同于乘法和除法运算。例如:
  int y_pos = 10
  //将y_pos乘以64
  y_pos = (y_pos << 6);//2^6=64

  相似的有

  {
  //将y_pos除以8
  y_pos = (y_pos >> 3);//1/2^3=1/8

分享到:
评论

相关推荐

    JSP实用技巧集合,jsp编程的一些小技巧总结

    jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...

    单片机应用编程技巧百问

    本文简单总结了单片机应用编程的技巧的相关问题。

    总结了90条简单实用的Python编程技巧!.docx

    总结了90条简单实用的Python编程技巧!.docx

    游戏编程--大师技巧

    第一部分 Windows编程基础  第一章 无尽之旅  历史一瞥  设计游戏  游戏类型  集思广益  设计文档和情节图板  使游戏具有趣味性  游戏的构成  常规游戏编程指导  使用工具  从准备到完成一使用编译器  ...

    VC++编程技巧、通俗易懂、内容丰富

    本人总结的一些VC编程技巧,内容通俗易懂,对于入门者也适用(内有贴图),其中包括字体、颜色设置、获取文件路径、简单线程编程、常见错误处理、特殊按钮制作等,还有一些源代码可供参考,希望对大家有帮助!

    c++编程学习的技巧总结

    1、把C++当成一门新的语言学习(和C没...5、不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点。 6、会用Visual C++ ,并不说明你会C++。 7、学class并不难,template、STL

    BOSCH博世DS7400XI-CHI总线报警主机简易编程

    BOSCH博世DS7400XI-CHI总线报警主机简易编程知识点总结 一、概述 BOSCH博世DS7400XI-CHI总线报警主机是一种复杂的安防设备,它需要进行编程以实现不同的报警功能。本文将对BOSCH博世DS7400XI-CHI总线报警主机的...

    C++ You+can+Do+It!编程新手互动教程中文版

    第1章是对编程概念和工具的简单介绍,第2章到第6章介绍了C++编程中的循环、函数、通信、类型创建和使用等技巧技能。第7章总结了编程的思路和技巧。接下来的6章(第8章到第13章)中,每一章都作为一个单元,在前17章的...

    VISUAL C++MFC扩展编程实例

    第一部分介绍Windows编程的基础知识,第二部分讲解用户界面编程技巧,最后一部分涉及Windows内部进程的一些实例。本书思路清晰,实用性强,是计算机应用人员及大专院校师生不可多得的参考书。 目 录 译者序 前言 ...

    ACM比赛经验与常见问题对应的解题技巧总结

    在LeetCode等平台上,针对特定类型题目进行专题训练,例如,你可以专门花一段时间集中攻克动态规划的问题,然后转至图论相关题目,每个主题完成后都要梳理总结,整理成便于查阅的笔记。 二、比赛策略 题目分析的实际...

    You.can.Do.It&#33;C++编程新手互动教程

    第1章是对编程概念和工具的简单介绍,第2章到第6章介绍了C++编程中的循环、函数、通信、类型创建和使用等技巧技能。第7章总结了编程的思路和技巧。接下来的6章(第8章到第13章)中,每一章都作为一个单元,在前17章...

    Tcl_TK编程权威指南pdf

    因此,我就总结了一套编程技巧以充分利用Tcl/Tk的强大功能,同时回避一些棘手的问题。这本书就是一本帮助你最大限度地利用Tcl/Tk并回避一些我所经历过的令人头痛的问题的实用编程指南。 我接触Tcl语言大概已经有10...

    C++编程思想(第2版)

    在第1版中文版的译者序中,我曾这样总结他的技巧:“其内容、讲授 方法、选用例子和跟随的练习,别具特色。原书作者不是按传统的方法讲解C++的概念和编程方法 ,而是根据他自己过去学习C++的亲身体会,根据他多年...

    Python 核心编程 第二版

    第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、 Web编程、数据库编程、扩展Python 和一些其他材料。  本书适合Python初学...

    JQuery技巧总结

    随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较... 它是一个简洁快速灵活的JavaScript框架,它能让你在你的网页上简单的操作文档、处理事件、实现特效并为Web页面添加Ajax交互。

    总结两个Javascript的哈稀对象的一些编程技巧

    先看一个最简单的应用。在下面的代码中,我们需要实现一个功能,就是点击每个按钮显示相应的网址 代码如下:&lt;input type=”button” value=”百度” onclick=”[removed]showUrl(this)”&gt; &lt;input type...

    使用LINQ来简化编程的7个技巧

    自从学习LINQ以来,我发现了很多使用LINQ来改善代码的方式。每一个技巧都让代码写起来更简单,可读性更强。 这里总结了这些技巧。我会介绍如何使用LINQ来:

    MATLAB使用技巧(15项黄金技巧总结).docx

    MATLAB是一种高级的数值计算和科学编程语言,广泛应用于工程、科学和数学领域。学习MATLAB具有以下重要性: 广泛应用:MATLAB在工程、科学和数学领域有着广泛的应用。它可以用于数据分析、信号处理、图像处理、控制...

    java 编程入门思考

    15.2.1 一个简单的服务器和客户机程序 15.3 服务多个客户 15.4 数据报 15.5 一个Web应用 15.5.1 服务器应用 15.5.2 NameSender程序片 15.5.3 15.5.3 要注意的问题 15.6 Java与CGI的沟通 15.6.1 CGI数据的编码 15.6.2...

    嵌入式系统C语言编程需要遵守什么样的原则

    好的编程技巧能显著提高程序的效率,但是这样的技巧是靠大量的工程实践总结的。下面我们就一起来简单说一下:嵌入式系统C语言编程需要遵守什么样的原则呢?

Global site tag (gtag.js) - Google Analytics