casting - 我是否过多地转换了整数类型?

标签 casting rust

我是 Rust 的新手,我一直在重新解决 Project Euler问题。问题是,我意识到我一直在强制转换整数类型(主要是 i32-i64)以适合我的陈述; for 迭代器、in 循环、for 函数输入、for 条件等等。这正常吗?

我猜我在处理通过 PE 并主要来自动态类型语言的一次性函数时做错了什么。

我总是尝试使用尽可能小(或最可行)的整数类型来解决问题,我觉得我应该对所有事情都使用 i64 并完成它而不是那么多转换周围。

哪个是更好/推荐的方法,一揽子 i64 类型或在代码中强制转换的合理整数类型?

编辑:在我想澄清的评论之后,这不完全是代码审查查询,而是关于最佳实践和可读性问题,因为这两个选项中的哪一个是首选。我认为如果不在循环中滥用,转换对性能的影响可以忽略不计。

不相关的 PS:我在做 P4 时用了一些质因数,结果发现没有回文是两个 4 位素数的乘积,而两个 3 位素数中最大的一个是 99899

最佳答案

I always try to use the smallest possible (or most feasible) int type for the problem

给你。优化。 (否则你为什么要这样做?)

Rust 鼓励您考虑整数类型。这会导致更好地定义和明确的程序行为,有助于捕获特定类型的错误并让您进行优化。

但是来自一种不那么细致的语言,您可能会过度使用它。这就是我们的思维通常的工作方式:当我们遇到一些新的能力或技能时,我们会尝试在任何地方使用它。

这通常是 Rust 的问题。该语言会向程序员介绍某些新概念(安全借用、零成本 future ),然后作为人们,我们会匆匆忙忙地把我们几乎没有经验的东西混在一起,把自己借到一个角落,或者在任何地方都使用 future 。

您正在尝试使用尽可能小的整数类型来优化您的程序,尽管您觉得这会让您的生活变得不那么舒适。如果你在 stackoverflow 上问这个问题,那么我会大胆地说,是的,你转换太多了!

您可能知道 Knuth 的格言,“过早的优化是万恶之源”。

不要让过度优化毁了您的编程体验。只有当你觉得舒服时才进行优化。当你想要时!

如果您害怕过早悲观,那么请将这种恐惧留给算法。请记住,使用大多数动态语言进行编程时,您没有太多的自由来过度优化,但您的动态语言程序仍然有效。

关于casting - 我是否过多地转换了整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481325/

相关文章:

c - 基于参数的类型转换变量

c++ - echo在Boost中输入命令行参数

angular - RxJS Observable 发出数字; observer.next() 接受字符串; Typescript 如何处理这个问题?

rust - 在Rust中,什么是保持范围内文件中数据读取的正确方法?

rust - 有什么方法可以表示 OsStr 或 OsString 文字吗?

android - Android NDK(libgcc_real.a)上 '__aeabi_ul2f'的多个定义

casting - 将堆栈对象编号转换为 int 时遇到问题 (Java)

casting - 当存在不同的重载时强制向上转型

file - 如何只获取当前可执行文件路径的目录部分?

rust - "two periods"运算符在方括号内的下标上下文中是什么意思?