计算机会记住计算表达式的结果吗?
Does a computer remember results of evaluated expressions?
计算机是否存储计算表达式的结果以在程序的同一执行会话期间加速未来的计算,或者程序是否需要手动包含此功能?
不,计算机不会自动执行此操作。他们几乎总是有 缓存 ,它存储最近从内存加载(或存储到)内存的数据副本,因为 storage/retrieval 从缓存中快几个数量级从主内存。但是,缓存不用于存储表达式的中间结果。
您将必须编写明确存储这些值的代码。这是某些算法的常见高级优化技术,称为 memoization。典型的例子是将它与递归算法一起使用来计算阶乘。以天真的方式进行操作,您最终将以指数方式计算低阶阶乘,这非常慢。但是,如果您保存这些值(例如,在一个数组中,可以在恒定时间内通过索引查找它们),您将显着加快算法速度。但计算机不会自动执行此操作。它无法知道您要保存哪些表达式的结果,并且总是这样做是悲观化,而不是优化。
计算机是否存储计算表达式的结果以在程序的同一执行会话期间加速未来的计算,或者程序是否需要手动包含此功能?
不,计算机不会自动执行此操作。他们几乎总是有 缓存 ,它存储最近从内存加载(或存储到)内存的数据副本,因为 storage/retrieval 从缓存中快几个数量级从主内存。但是,缓存不用于存储表达式的中间结果。
您将必须编写明确存储这些值的代码。这是某些算法的常见高级优化技术,称为 memoization。典型的例子是将它与递归算法一起使用来计算阶乘。以天真的方式进行操作,您最终将以指数方式计算低阶阶乘,这非常慢。但是,如果您保存这些值(例如,在一个数组中,可以在恒定时间内通过索引查找它们),您将显着加快算法速度。但计算机不会自动执行此操作。它无法知道您要保存哪些表达式的结果,并且总是这样做是悲观化,而不是优化。