关于提升程序效率的一点思考 Shepard-Wang

请看下面的程序,在程序运行的效率方面,你能找出什么问题?

str1 = "Hello";
str2 = "World";

if(strcmp(str1, str2) > 0){
    printf("str1 > str2")
}else if(strcmp(str1, str2) < 0){
    printf("str1 < str2");
}else{
    printf("str1 == str2");
}

在这个程序中,字符串比较小,这样写没有问题;但是如果字符串十分大或需要比较很多次,你每次都会浪费一次 strcmp 的时间!

正确的写法应该是这样的:

int ret = strcmp(str1, str2);
if(ret > 0){
    printf("str1 > str2")
}else if(ret < 0){
    printf("str1 < str2");
}else{
    printf("str1 == str2");
}

其实在编程中,这类问题是很多的,归根结底就是一个字——懒!

有时候,“懒”是会付出代价的。

所以,编程的时候一定要长点心,如果可以通过创建一个或者多个新的变量来降低程序的复杂度或者让人容易理解,那么牺牲程序的“空间复杂度”也是可以接受的。