我是Rust的新手,我一直在重新解决Project Euler的问题.问题是,我意识到我一直在构建整数类型(主要是i32- i64)以适应我的陈述; for iterators,in循环,函数输入,条件等等.这是正常的吗?
我猜我在使用PE的一次性功能以及主要来自动态类型语言时做错了.
我总是尝试使用尽可能小的(或最可行的)积分类型来解决问题,我觉得我应该只i64考虑所有事情并完成它而不是那么多.
哪个是更好/推荐的方法,毯i64式类型或合理的整数类型与代码中的转换?
编辑:在我想澄清的评论之后,这不是一个代码审查查询,而是关于最佳实践和可读性问题,因为这两个选项中的哪一个是首选.我认为,在循环中没有误用时,铸造对性能的影响可以忽略不计.
不相关的PS:我正在使用一系列素数因素做P4,结果是没有回文是两个4位数素数的产物,而两个3位素数的最大值是99899
我总是尝试使用尽可能小(或最可行)的int类型来解决问题
这个给你.优化.(因为你为什么还要那样做?)
Rust鼓励您考虑整数类型.这样可以更好地定义和显式的程序行为,有助于捕获某种类型的错误并让您进行优化.
但是来自一种不那么细致的语言,你可能会过度使用它.这就是我们的思维经常运作的方式:当我们遇到一些新的能力或技能时,我们会尝试在任何地方使用它.
这通常是Rust的一个问题.这种语言会向程序员介绍某些新概念(安全借用,零成本期货),然后作为人们,我们会匆匆忙忙地混淆我们几乎没有经验的东西,将自己借入一个角落或者绝对无处不在地使用期货.
您正在尝试使用尽可能小的整数类型来优化您的程序,即使您觉得它会让您的生活变得不那么舒服.如果你在stackoverflow上问这个问题,那么我会说出来,说,是的,你投的太多了!
你可能知道Knuth的座右铭,即" 过早的优化是所有邪恶的根源 ".
不要让过度优化破坏您的编程体验.只有在您对它感到满意时才进行优化.什么时候想要!
如果你害怕过早的悲观,那么就要省去算法的恐惧.请记住,在大多数动态语言中编程时,您没有太多的过度优化自由,但您的动态语言程序仍然有效.