11.3 重构计算顺序

728 篇文章 1 订阅
349 篇文章 0 订阅

11.3 重构计算顺序

 

我们已经看了如何在使用不可变数据结构的代码中,跟踪函数之间的依赖关系。一旦我们知道了依赖关系是什么,有时就可以调整操作的顺序,使程序更有效,而保持原来的意思不变。清单11.12 就是这种类型优化的一个简单例子。

 

清单11.12 重构程序中的计算(C#)

var num = Calculate1(10);   [1]

var test = TestCondition();

if (test == true)

   return Calculate2(num);

else return 0;

var test = TestCondition();

if (test == true) {

   var num = Calculate1(10);   [2]

   return Calculate2(num);

} else return 0;

 

在第一个版本中,我们是在程序开始时调用Calculate1 函数[1],而调用的结果只在TestCondition 返回true 时使用;如果不是这种情况,我们就没有任何理由执行Calculate1 函数,浪费CPU 时间!在第二个版本中,我们把这个计算移到了if 条件内[2],所以,只在需要这个结果时才计算。

这个修改很简单,你可能有写过更有效的版本,只是没有思考过。随着程序逐渐增长,像这样的优化变得更加难以发现。清单11.13 是一个稍微复杂的例子。

 

清单11.13 传递计算结果给函数(C#)

int TestAndCalculate(int num) {

  vartest = TestCondition();   [1]

  if (test== true)

    returnCalculate2(num);   [2]

  elsereturn 0;

}

 

TestAndCalculate(Calculate1(10));    [3]  <-- 在后面的程序中使用

 

在这个例子中,函数的参数为值num,但函数可能根本就不需要这个值。如果条件[1]的计算结果为false,函数返回0,num 值就没有意义了;当调用此函数时[3],函数Calculate1 总是会执行,即使我们后来发现不需要它的结果。

在Haskell(另一种流行的函数式语言)中,如果代码不需要Calculate1 的结果,不会调用Calculate1;因为,Haskell 使用了不同的计算策略(evaluation strategy)。在回到优化清单11.13 之前,我们要讨论几种策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CUDA 11.3是最新版本的NVIDIA CUDA工具包,它提供了针对NVIDIA GPU的编程计算能力。CUDA 11.3安装过程相对简单,可以按照以下步骤进行: 1. 下载CUDA 11.3 首先需要从NVIDIA官方网站下载CUDA 11.3工具包,下载地址为 https://developer.nvidia.com/cuda-downloads。根据自己的系统选择合适的版本进行下载。 2. 安装CUDA 11.3 下载完成后,双击安装包进行安装。在安装过程中,需要阅读并同意NVIDIA的许可协议。接着,选择安装选项,建议选择“自定义”以便于设置安装路径和组件。 3. 设定环境变量 安装完成后,需要将CUDA 11.3添加到环境变量中。可以通过在命令行中输入“echo %PATH%”查看系统环境变量。如果没有包含CUDA路径,则需要手动添加。 将CUDA 11.3的安装路径添加到环境变量中,包括CUDA的主目录、bin目录和lib目录。例如,在Windows系统中可以通过以下命令添加环境变量: set PATH=%PATH%;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\libnvvp 4. 验证CUDA安装 完成以上步骤后,可以通过运行例程验证CUDA的安装。例如,在Windows系统中,可以在命令行中进入CUDA的Sample目录(默认路径为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\samples),运行“nvcc -V”进行编译验证。如果输出正确的CUDA版本信息,则说明CUDA 11.3已经成功安装。 总之,通过以上步骤,可以顺利完成CUDA 11.3的安装。CUDA工具包的强大功能可以加速GPU计算和开发,提高了计算的效率和可扩展性,是GPU编程的必备工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值