代码之家  ›  专栏  ›  技术社区  ›  hkk David Calhoun

将所有内容放在主目录中是否存在性能劣势?

  •  4
  • hkk David Calhoun  · 技术社区  · 7 年前

    在《铁锈》中,你基本上可以把任何东西放在主屏幕上。特征、实现块、函数、静态变量。。。

    fn main() {
        trait Foo {
            fn foo();
        }
    
        impl Foo for f64 {
            fn foo() {}
        }
    
        struct MyStruct;
    
        enum RustIsCool {
            MyStruct,
        };
    
        fn bar() {
            trait Baz {
                fn baz();
            }
    
            impl Baz for f64 {
                fn baz() {}
            }
        }
    
        static x: f64 = 10.0;
    
        println!("This compiles!");
    }
    

    正如你所见,你甚至可以把这些东西嵌套在其他的块中。

    显然,从文体角度来看,这样做是不好的;它很难看,很难重构,并且使代码重用更加困难。

    但我很好奇:这样做有没有性能开销?还是Rust编译器优化了任何差异?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Lukas Kalbertodt    7 年前

    简短回答: 没有什么大不了的 .

    如果您查看LLVM-IR your code on playground code where all of your definitions are outside of main() ,您将看到在“调试”模式下没有任何差异(由于命名的原因除外)。在“Release”模式下,没有任何区别。

    main 会暗指 主要的

    可能影响代码生成的一些原因:

    • 自中的定义 不能在外部使用 主() ,这可能是一个强烈的提示,可以内联函数调用这些内容,并删除原始定义(如果可能)。这通常会提高性能。
    • rustc
    • ...