
优化
文章平均质量分 55
hhko12322
无耐无耐无耐啊
展开
-
程序优化c++ 摘1
一 1 在分析一个操作执行太慢,则需要首先分类的是IO操作密集还是cpu计算密集。 这个可以这样区分,用虚拟硬盘工具(例如ramdisk tool)把一部分内存虚拟成硬盘,应用程序和基准文件都安装在虚拟硬盘上,如果程序性能改善明显,则是IO相关的问题。二 2 针对IO瓶颈的优化: 每次IO操作大约在10ms的量级,100次就是1s左右,所以尽量原创 2013-06-09 09:45:57 · 553 阅读 · 0 评论 -
x86下的C函数调用惯例
1 从汇编到C1.1 汇编语言的局限性汇编语言是一种符号化了的机器语言,即用指令助记符、符号地址、标号等符号书写程序的语言。汇编语句与机器语句一一对应,它只是把每条指令及数据用便于记忆的符号书写而已。汇编语言,使用人类语言的单词作为助记符与机器码建立一一对应关系。汇编器维护了对应关系映射表,并在汇编阶段将汇编代码翻译成机器码指令。相对于直接纸带打孔而言,汇编程序已经前进转载 2014-05-31 10:43:29 · 1178 阅读 · 0 评论 -
汇编语言 JMP CALL RET RETF的使用与区别
转载自:http://chuanwang66.iteye.com/blog/1075859 JMP、CALL和RET指令的近转移形式只是在当前代码段中执行程序控制转移,因此不会执行特权级检查。JMP、CALL或RET指令的远转移形式会把控制转移到另外一个代码段中,因此处理器一定会执行特权级检查。1、jmp指令紧紧进行执行流程的跳转,不会保存返回地址转载 2014-06-12 10:28:57 · 4145 阅读 · 0 评论 -
值加减,别忘可能是个指针运算
在做dsp pci驱动时,有一句:WRITE_REGISTER_ULONG((PULONG) (pdx->base[TI_OPREGS] + (TI_HSR/4)), TI_DISABLE);TI_HSR 做了除以4,感觉不解,就把除以4去掉,运行。。。毫无意外的蓝屏了pdx->base[TI_OPREGS] + (TI_HSR/4)检测了它的值,发现和 pdx->base[TI_原创 2014-01-02 13:49:14 · 716 阅读 · 0 评论 -
CUDA中的一些概念和提示
1.在用vs运行cuda的一些例子时,在编译阶段会报出很多警告: warning C4819 ...... 解决这个警告的方法是打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file->Advanced save options,在弹出的选项中选择新的编码方式为:UNICODE- codepage 1200 ,点确定后重新编译。 为什么会出现这个警告原创 2013-09-11 12:57:37 · 877 阅读 · 0 评论 -
visual c++ 调试版本与发行版本区别之一
变量初值 : 调试版本和发行版本在初始化变量时所作的操作是不同的,调试版本是将每个字节都赋值成 0xcc,而发布版本不对变量赋初值。原创 2013-08-25 14:57:13 · 688 阅读 · 0 评论 -
内存对齐
1 //环境:vc6 + windows sp2 2 //程序1 3 #include iostream> 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ;10 int b ;11 short c ;12 };13 14 struct st215 {转载 2013-08-24 11:23:16 · 525 阅读 · 0 评论 -
关于指针
一 指针的加减操作: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 程序输出是什么。解答: 程序输出: 2,5分析: 这里主要是考查关于指针加减操作的理解。 对指针进行加原创 2013-08-24 11:19:29 · 597 阅读 · 0 评论 -
typedef的四个用途和两个陷阱
typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,转载 2013-08-24 11:10:03 · 745 阅读 · 0 评论 -
vc 程序效率测试 与 如何获取系统精确时间
GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。如: DWORD time; time = GetTickCount();但是GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(voi原创 2013-08-23 22:41:41 · 818 阅读 · 0 评论 -
C语言 内存管理详解
伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式转载 2013-08-23 22:26:38 · 610 阅读 · 0 评论 -
already defined in *.obj
造成LNK2005错误主要有以下几种情况: 11.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int g_Test;那么在使用的CPP文件中就应该使用:extern int g_Test即可,如果还是使用int g_Test转载 2013-08-23 10:24:00 · 890 阅读 · 0 评论 -
C语言编程常见问题解答之数组
(隔段时间不看就会在实际使用中忘记掉---c语言数组、异或指针的使用),转载一下,忘时供查询 C语言处理数组的方式是它广受欢迎的原因之一。C语言对数组的处理是非常有效的,其原因有以下三点: 第一,除少数翻译器出于谨慎会作一些繁琐的规定外,C语言的数组下标是在一个很低的层次上处理的。但这个优点也有一个反作用,即在程序运行时你无法知道一个数组到底有多大,或者一个数组下标是否有效。ANSI转载 2013-08-20 16:42:54 · 3533 阅读 · 0 评论 -
c编程习惯要点
1 头文件预定义 # ifndef __MY_TYPE_H__ #define __MY_TYPE_H__ ...........//omit #endif 前两行是用来防止头文件被多次引用时重复定义而报错。预定义的那个字符是一个唯一的标志,它的命名规则为:写成两个下划线加文件名(文件名的“ . ”用一个下划线替换)加两个下划线的格式。这种宏定义原创 2013-08-06 23:04:46 · 634 阅读 · 0 评论 -
程序优化c++ 摘2
一 1c++对象构造函数: 创建一个对象分成两个步骤,首先取得对象所需的内存,然后在该内存上执行构造函数。在构造函数构建该对象的时候,构造函数也分成两步:先执行初始化(通过初始化列表),再执行构造函数的函数体。。。。。这意味着,如果在构造函数函数体内为成员变量执行赋值操作,显然属于浪费,初始化成员变量通过构造函数的初始化列表赋予成员变量,而不是在构造函数体内进行这些初始原创 2013-06-10 15:09:38 · 587 阅读 · 0 评论 -
X86-64寄存器和栈帧
概要说到x86-64,总不免要说说AMD的牛逼,x86-64是x86系列中集大成者,继承了向后兼容的优良传统,最早由AMD公司提出,代号AMD64;正是由于能向后兼容,AMD公司打了一场漂亮翻身战。导致Intel不得不转而生产兼容AMD64的CPU。这是IT行业以弱胜强的经典战役。不过,大家为了名称延续性,更习惯称这种系统结构为x86-64X86-64在向后兼容的同时,更主要的是注入了转载 2014-05-31 11:50:33 · 1128 阅读 · 0 评论