减少运行时间耗费的技巧
来源:互联网 发布:get it beauty2015 编辑:程序博客网 时间:2024/04/29 17:58
很多人误以为宏是在程序运行时被替换的,所会定义宏会浪费运行时间。其实宏时在编译时被替换的,不会占用运行时间。定义宏是有很多好处的,在此我就不细说了。
函数调用很占用运行时间,如果在一段程序中有一个函数被频繁的调用,可以将其直接写在上层函数中(单单从考虑运行时间的角度,不仅比写成函数的形式要好,而且好很多,即使函数是内敛的,也不如直接写进上层函数好)。
当大家所要编写的程序对运行时间要求比较高的时候,小编在这里给的建议是:
1、不要害怕使用用宏,宏对运行时间没有影响
2、反复使用的语句可以先写成函数,在数据测试成功之后,将这些函数写进上层函数中
e.g.
此段程序在某个测试数据环境下,如果使用内敛函数,运行时间为1000ms+;如果直接把比较写进上层函数,则运行时间为795ms
#include <stdio.h>
#define DOG 'S'
#define WALL 'X'
#define DOOR 'D'
#define EMPTY '.'
#define YES 1
#define NO 0
#define VISITED 1
#define UNVISITED 0
#define MAX 10
int n,m,t;
char maze[MAX][MAX];
int vis[MAX][MAX];
int res;
void Init() {
int i,j;
for (i = 0;i < MAX;i++)
for (j = 0;j < MAX;j++)
vis[i][j] = UNVISITED;
return;
}
//inline bool IsInMaze(int i,int j) {
// if (1 <= i && i <= n
// && 1 <= j && j <= m
// && vis[i][j] == UNVISITED)
// return true;
// else false;
//}
void Visit(int i,int j,int deep) {
if (deep > t || res == YES) return;
if (deep == t && maze[i][j] == DOOR) {
res = YES;
return;
}
if (maze[i][j] == EMPTY || maze[i][j] == DOG) {
vis[i][j] = VISITED;
// if (IsInMaze(i+1,j)) Visit(i+1,j,deep+1);
// if (IsInMaze(i-1,j)) Visit(i-1,j,deep+1);
// if (IsInMaze(i,j+1)) Visit(i,j+1,deep+1);
// if (IsInMaze(i,j-1)) Visit(i,j-1,deep+1);
if (i+1 <= n && vis[i+1][j] == 0) Visit(i+1,j,deep+1);
if (1 <= i-1 && vis[i-1][j] == 0) Visit(i-1,j,deep+1);
if (j+1 <= m && vis[i][j+1] == 0) Visit(i,j+1,deep+1);
if (1 <= j-1 && vis[i][j-1] == 0) Visit(i,j-1,deep+1);
vis[i][j] = UNVISITED;
}
return;
}
int main() {
int i,j,k;
int S_i,S_j;
while (scanf("%d%d%d",&n,&m,&t) != EOF && (n||m||t)) {
for (i = 1;i <= n;i++) {
for (j = 1;j <= m;j++) {
while (scanf("%c",&maze[i][j])
&& maze[i][j] != DOG
&& maze[i][j] != WALL
&& maze[i][j] != DOOR
&& maze[i][j] != EMPTY);
if (maze[i][j] == DOG) {
S_i = i;
S_j = j;
}
}
}
res = NO;
Init();
Visit(S_i,S_j,0);
if (res == YES) printf("YES\n");
else printf("NO\n");
}
return 0;
}
——1010
1 0
- 减少运行时间耗费的技巧
- Swift减少print函数的耗费
- 测量sql 解析耗费的时间比例
- C程序计算耗费的时间
- 从开始到现在耗费的时间
- 延时程序耗费时间的精确算法
- memset对memcpy耗费时间的影响
- 一种减少索引下载/切换总时间的技巧
- 减少网页加载时间的6个技巧
- 如何在VC6.0中得到一个程序的运行时间,也就是这个程序耗费的时钟周期数// C和C++的时间编程
- 一个小小的问题耗费了两个小时的时间
- C++中如何测试程序耗费的时间
- 测试1秒钟休眠所耗费的时间
- 判断一个页面加载所耗费的时间
- 耗费一周时间才解决的2个BUG
- 判断一个页面加载所耗费的时间
- Hadoop MapTask/ReduceTask各阶段耗费时间的测试
- Hadoop MapTask/ReduceTask各阶段耗费时间的测试
- hdu 1021 Fibonacci Again
- razor关键字+.NET MVC
- Android下常见的内存泄露 经典
- C++编译时的类型推导
- 安装kali linux后遇到的问题解决方案
- 减少运行时间耗费的技巧
- linux内核数据结构之kfifo
- CF341A
- ssh面密码登陆
- JAVA中List、Map、Set的区别与选用
- 极客标签 | 在线编程知识分享学习平台
- 设计模式之模板方法模式
- 博客搬家
- ubuntu中vmware出现:Network configuration is missing. Ensure that /etc/vmware/networking exists.的处理方式