Skip to content

Un-bloat Wasmi translation codegen #1797

@Robbepop

Description

@Robbepop

This is the output of cargo bloat -p wasmi_cli --profile bench:

 File  .text    Size        Crate Name
 1.7%   2.9% 38.2KiB    wasmi_ir? <wasmi_ir::op::Op as core::fmt::Debug>::fmt
 1.5%   2.7% 34.9KiB        wasmi wasmi::main
 1.2%   2.2% 28.4KiB        wasmi wasmi::engine::translator::driver::FuncTranslationDriver<T>::translate_operators
 1.0%   1.7% 22.1KiB        wasmi wasmi::engine::translator::driver::FuncTranslationDriver<T>::translate_operators
 0.8%   1.3% 17.7KiB        wasmi wasmi::module::parser::buffered::<impl wasmi::module::parser::ModuleParser>::parse_buffered_header
 0.7%   1.1% 15.0KiB clap_builder clap_builder::parser::parser::Parser::get_matches_with
 0.6%   1.0% 13.0KiB clap_builder clap_builder::parser::validator::Validator::validate
 0.5%   0.9% 12.2KiB  wasmparser? <wasmparser::readers::core::operators::Operator as core::fmt::Debug>::fmt
 0.5%   0.9% 12.1KiB       wasmi? <wasmi::args::Args as clap_builder::derive::CommandFactory>::command
 0.4%   0.8% 10.1KiB        wasmi wasmi::engine::translator::driver::FuncTranslationDriver<T>::translate_operators
 0.4%   0.7%  9.4KiB        wasmi wasmi::engine::translator::driver::FuncTranslationDriver<T>::translate_operators
 0.4%   0.7%  9.2KiB          std std::backtrace_rs::symbolize::gimli::resolve
 0.4%   0.7%  8.9KiB   wasmparser wasmparser::validator::Validator::type_section
 0.4%   0.7%  8.9KiB     wasmi_ir <wasmi_ir::op::Op as wasmi_ir::encode::Encode>::encode
 0.3%   0.6%  8.0KiB clap_builder clap_builder::output::help_template::HelpTemplate::write_templated_help
 0.3%   0.6%  7.5KiB          std std::backtrace_rs::symbolize::gimli::Context::new
 0.3%   0.5%  6.9KiB clap_builder clap_builder::parser::parser::Parser::react
 0.3%   0.5%  6.8KiB          std gimli::read::dwarf::Unit<R>::new
 0.3%   0.5%  6.0KiB clap_builder clap_builder::parser::parser::Parser::match_arg_error
 0.3%   0.4%  5.9KiB   wasmparser wasmparser::binary_reader::BinaryReader::visit_operator
45.3%  78.8%  1.0MiB              And 3190 smaller methods. Use -n N to show more.
57.4% 100.0%  1.3MiB              .text section size, the file size is 2.2MiB

It clearly indicates that translate_operators is among the top-offenders and even duplicated multiple times due to generics monomorphization.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions