# To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 1K of event 'task-clock:ppp' # Event count (approx.): 168300000 # # Overhead Samples Command Shared Object Symbol # ........ ............ ....... .................... ............................................................................................................................................................. # 32.44% 546 osh oils-for-unix [.] MarkSweepHeap::MaybeMarkAndPush(RawObject*) 10.46% 176 osh oils-for-unix [.] MarkSweepHeap::TraceChildren() 5.35% 90 osh oils-for-unix [.] MarkSweepHeap::Sweep() 5.11% 86 osh oils-for-unix [.] MarkSweepHeap::Allocate(unsigned long, int*, int*) 2.55% 43 osh oils-for-unix [.] match::OneToken(types_asdl::lex_mode_e, BigStr*, int) 1.90% 32 osh oils-for-unix [.] lexer::Lexer::_Read(types_asdl::lex_mode_e) 1.84% 31 osh [kernel.kallsyms] [k] 0xffffffff8a060127 1.72% 29 osh [kernel.kallsyms] [k] 0xffffffff8a0e4249 1.66% 28 osh oils-for-unix [.] lexer::LineLexer::Read(types_asdl::lex_mode_e) 1.60% 27 osh [kernel.kallsyms] [k] 0xffffffff890b4b12 1.49% 25 osh oils-for-unix [.] alloc::Arena::NewToken(int, int, int, syntax_asdl::SourceLine*) 1.37% 23 osh oils-for-unix [.] cmd_parse::CommandParser::_GetWord() 0.89% 15 osh oils-for-unix [.] lexer::Lexer::Read(types_asdl::lex_mode_e) 0.77% 13 osh oils-for-unix [.] word_::CommandId(syntax_asdl::word_t*) 0.77% 13 osh oils-for-unix [.] word_parse::WordParser::_MaybeReadWordPart(bool, types_asdl::lex_mode_e, List*) 0.71% 12 osh oils-for-unix [.] word_parse::WordParser::_ReadCompoundWord3(types_asdl::lex_mode_e, int, bool) 0.59% 10 osh libc.so.6 [.] __getdelim 0.59% 10 osh libc.so.6 [.] malloc 0.59% 10 osh oils-for-unix [.] alloc::Arena::AddLine(BigStr*, int) 0.59% 10 osh oils-for-unix [.] cmd_parse::CommandParser::_ScanSimpleCommand() 0.59% 10 osh oils-for-unix [.] word_parse::WordParser::_ReadWord(types_asdl::lex_mode_e) 0.53% 9 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.53% 9 osh oils-for-unix [.] consts::GetKind(unsigned short) 0.53% 9 osh oils-for-unix [.] word_parse::WordParser::_GetToken() 0.42% 7 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.42% 7 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCommand() 0.42% 7 osh oils-for-unix [.] executor::PureExecutor::PopProcessSub(runtime_asdl::StatusArray*) 0.36% 6 osh [kernel.kallsyms] [k] 0xffffffff893c7a3d 0.36% 6 osh libc.so.6 [.] 0x00000000000a48b0 0.36% 6 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.36% 6 osh oils-for-unix [.] braces::BraceDetect(syntax_asdl::CompoundWord*) 0.36% 6 osh oils-for-unix [.] cmd_parse::CommandParser::ParseSimpleCommand() 0.36% 6 osh oils-for-unix [.] reader::_Reader::GetLine() 0.36% 6 osh oils-for-unix [.] word_::StaticEval(syntax_asdl::word_t*) 0.30% 5 osh libc.so.6 [.] cfree 0.30% 5 osh oils-for-unix [.] BigStr::slice(int, int) 0.30% 5 osh oils-for-unix [.] List::append(syntax_asdl::SourceLine*) 0.30% 5 osh oils-for-unix [.] cmd_parse::CommandParser::_MaybeExpandAliases(List*) 0.30% 5 osh oils-for-unix [.] word_parse::WordParser::ReadWord(types_asdl::lex_mode_e) 0.30% 5 osh oils-for-unix [.] word_parse::WordParser::_ReadLikeDQ(syntax_asdl::Token*, bool, List*) 0.24% 4 osh [kernel.kallsyms] [k] 0xffffffff893c3747 0.24% 4 osh [kernel.kallsyms] [k] 0xffffffff8946889f 0.24% 4 osh libc.so.6 [.] 0x00000000000a48b4 0.24% 4 osh oils-for-unix [.] BigStr::join(List*) 0.24% 4 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.24% 4 osh oils-for-unix [.] List::at(int) 0.24% 4 osh oils-for-unix [.] cmd_parse::CommandParser::ParseRedirect() 0.24% 4 osh oils-for-unix [.] reader::FileLineReader::_GetLine() 0.24% 4 osh oils-for-unix [.] word_::DetectShAssignment(syntax_asdl::CompoundWord*) 0.24% 4 osh oils-for-unix [.] word_::LiteralId(syntax_asdl::word_part_t*) 0.18% 3 osh [kernel.kallsyms] [k] 0xffffffff893d0379 0.18% 3 osh oils-for-unix [.] List* Alloc>() 0.18% 3 osh oils-for-unix [.] List::at(int) 0.18% 3 osh oils-for-unix [.] cmd_parse::CommandParser::ParseAndOr() 0.18% 3 osh oils-for-unix [.] cmd_parse::CommandParser::ParseIf() 0.18% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseAndOr() 0.18% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandTerm() 0.18% 3 osh oils-for-unix [.] reader::VirtualLineReader::GetLine() 0.18% 3 osh oils-for-unix [.] word_::CheckLiteralId(syntax_asdl::word_part_t*, int) 0.18% 3 osh oils-for-unix [.] word_::CommandKind(syntax_asdl::word_t*) 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff8937da4b 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893c794a 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893ce8ea 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893cfbfe 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893cfdcb 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893e40a2 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893f6161 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893f79d0 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893f9680 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893f973a 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff893faf85 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff894659a9 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff8946a0ea 0.12% 2 osh [kernel.kallsyms] [k] 0xffffffff8a304104 0.12% 2 osh ld-linux-x86-64.so.2 [.] 0x000000000000c12d 0.12% 2 osh libc.so.6 [.] 0x0000000000199de8 0.12% 2 osh libc.so.6 [.] 0x00000000001a07eb 0.12% 2 osh libc.so.6 [.] 0x00000000001a0a64 0.12% 2 osh libc.so.6 [.] 0x00000000001a104a 0.12% 2 osh oils-for-unix [.] BigStr::at(int) 0.12% 2 osh oils-for-unix [.] BigStr::endswith(BigStr*) 0.12% 2 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.12% 2 osh oils-for-unix [.] List::at(int) 0.12% 2 osh oils-for-unix [.] List* Alloc>() 0.12% 2 osh oils-for-unix [.] List* Alloc>() 0.12% 2 osh oils-for-unix [.] StripAny(BigStr*, StripWhere, int) 0.12% 2 osh oils-for-unix [.] braces::BraceDetectAll(List*) 0.12% 2 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCaseArm() 0.12% 2 osh oils-for-unix [.] cmd_parse::CommandParser::ParsePipeline() 0.12% 2 osh oils-for-unix [.] cmd_parse::_MakeSimpleCommand(List*, List*, syntax_asdl::ArgList*, value_asdl::LiteralBlock*) 0.12% 2 osh oils-for-unix [.] cmd_parse::_SplitSimpleCommandPrefix(List*) 0.12% 2 osh oils-for-unix [.] lexer::LineLexer::LookAheadOne(types_asdl::lex_mode_e) 0.12% 2 osh oils-for-unix [.] location::LeftTokenForWordPart(syntax_asdl::word_part_t*) 0.12% 2 osh oils-for-unix [.] match::IsValidVarName(BigStr*) 0.12% 2 osh oils-for-unix [.] mylib::CFile::readline() 0.12% 2 osh oils-for-unix [.] syntax_asdl::CompoundWord* Alloc*>(List*&&) 0.12% 2 osh oils-for-unix [.] syntax_asdl::SimpleVarSub* Alloc(syntax_asdl::Token*&) 0.12% 2 osh oils-for-unix [.] word_::IsControlFlow(syntax_asdl::CompoundWord*) 0.12% 2 osh oils-for-unix [.] word_::TildeDetect2(syntax_asdl::CompoundWord*) 0.12% 2 osh oils-for-unix [.] word_::TildeDetectAll(List*) 0.12% 2 osh oils-for-unix [.] word_::_EvalWordPart(syntax_asdl::word_part_t*) 0.12% 2 osh oils-for-unix [.] word_parse::WordParser::LookAheadFuncParens() 0.12% 2 osh oils-for-unix [.] word_parse::WordParser::_ReadUnquotedLeftParts(syntax_asdl::BoolParamBox*) 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff890b496e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff890b4ba3 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff890b4bb6 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff890b4d88 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89172da9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff891b04df 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89346011 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8936c67f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8936c6e3 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8936c736 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8937d9bd 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8937e8e0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893a0310 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893a269d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893a26a7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893a26c2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893c2e0a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893c3726 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893c7908 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893c79ab 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893c7aaa 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893c7ab7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ca182 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893cb3b6 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893cb421 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893cb455 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce6b9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce6cc 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce82d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce843 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce934 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce953 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893ce99c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893cfa13 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893cfd28 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893cfe3e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893d042b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893d0456 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893d0498 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893d60d5 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893d68ad 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e3f4c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e40df 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e417a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e41ac 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e41cb 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e6c8b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893e6f51 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f3c63 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f3c9a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f3e54 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f3f08 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f56f6 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f717c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f796e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f8ae2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f8ae8 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893f8b15 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893fada2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff893fadaf 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8940520a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff894137f9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89413987 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8941b100 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89432196 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff894321d7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89432516 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89432543 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8943258f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89463487 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89464941 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8946497d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89465a19 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89465a21 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89468826 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8946a0be 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8949b812 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff894b2661 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff894fc995 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89661595 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8976148d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff897ad4b8 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff89872784 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a03d2ca 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a03e90d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a040780 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a040785 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a0407df 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a0408dd 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a04095d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a04d4a1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a05c616 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a0dd43e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a0e054e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8a0e48b0 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b247 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b4be 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b791 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c154 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000011429 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000015dbd 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000018426 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000027226 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000002b1da 0.06% 1 osh libc.so.6 [.] fstatat64 0.06% 1 osh libc.so.6 [.] isupper 0.06% 1 osh libc.so.6 [.] 0x00000000000a1723 0.06% 1 osh libc.so.6 [.] 0x00000000000a2709 0.06% 1 osh libc.so.6 [.] 0x00000000000a272d 0.06% 1 osh libc.so.6 [.] 0x00000000000a2745 0.06% 1 osh libc.so.6 [.] 0x00000000000a2761 0.06% 1 osh libc.so.6 [.] 0x00000000000a2801 0.06% 1 osh libc.so.6 [.] 0x00000000000a2806 0.06% 1 osh libc.so.6 [.] 0x00000000000a2a11 0.06% 1 osh libc.so.6 [.] 0x00000000000a2a1d 0.06% 1 osh libc.so.6 [.] 0x00000000000a3a0d 0.06% 1 osh libc.so.6 [.] 0x00000000000a3d74 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e06 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e93 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e97 0.06% 1 osh libc.so.6 [.] 0x00000000000a4883 0.06% 1 osh libc.so.6 [.] 0x00000000001992cd 0.06% 1 osh libc.so.6 [.] 0x00000000001992e4 0.06% 1 osh libc.so.6 [.] 0x00000000001992fa 0.06% 1 osh libc.so.6 [.] 0x0000000000199d83 0.06% 1 osh libc.so.6 [.] 0x0000000000199de2 0.06% 1 osh libc.so.6 [.] 0x00000000001a07c4 0.06% 1 osh libc.so.6 [.] 0x00000000001a07e1 0.06% 1 osh libc.so.6 [.] 0x00000000001a0814 0.06% 1 osh libc.so.6 [.] 0x00000000001a0826 0.06% 1 osh libc.so.6 [.] 0x00000000001a0836 0.06% 1 osh libc.so.6 [.] 0x00000000001a0f8b 0.06% 1 osh libc.so.6 [.] 0x00000000001a0f90 0.06% 1 osh libc.so.6 [.] 0x00000000001a0fd2 0.06% 1 osh oils-for-unix [.] BigStr::isupper() 0.06% 1 osh oils-for-unix [.] BigStr::rstrip() 0.06% 1 osh oils-for-unix [.] List::at(int) 0.06% 1 osh oils-for-unix [.] List*>* Alloc*>>() 0.06% 1 osh oils-for-unix [.] List*>::at(int) 0.06% 1 osh oils-for-unix [.] List* NewList(std::initializer_list) 0.06% 1 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.06% 1 osh oils-for-unix [.] List* Alloc>() 0.06% 1 osh oils-for-unix [.] List* NewList(std::initializer_list) 0.06% 1 osh oils-for-unix [.] List::at(int) 0.06% 1 osh oils-for-unix [.] List* Alloc>() 0.06% 1 osh oils-for-unix [.] Tuple2* Alloc, syntax_asdl::SourceLine*&, int&>(syntax_asdl::SourceLine*&, int&) 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseDoGroup() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseFor() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseForWords() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseOldCase(syntax_asdl::Token*) 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_AtSecondaryKeyword() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_Eat(int, BigStr*) 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseConditionList() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseElifElse(syntax_asdl::command__If*) 0.06% 1 osh oils-for-unix [.] cmd_parse::_AppendMoreEnv(List*, List*) 0.06% 1 osh oils-for-unix [.] cmd_parse::_ReadHereLines(reader::_Reader*, syntax_asdl::Redir*, BigStr*) 0.06% 1 osh oils-for-unix [.] hash_key(int) 0.06% 1 osh oils-for-unix [.] lexer::TokenSliceRight(syntax_asdl::Token*, int) 0.06% 1 osh oils-for-unix [.] location::LeftTokenForCompoundWord(syntax_asdl::CompoundWord*) 0.06% 1 osh oils-for-unix [.] main_loop::ParseWholeFile(cmd_parse::CommandParser*) 0.06% 1 osh oils-for-unix [.] memcpy@plt 0.06% 1 osh oils-for-unix [.] parse_lib::ParseContext::MakeLexer(reader::_Reader*) 0.06% 1 osh oils-for-unix [.] state::_FrameLookup(Dict*, BigStr*, bool) 0.06% 1 osh oils-for-unix [.] word_::BraceToken(syntax_asdl::word_t*) 0.06% 1 osh oils-for-unix [.] word_::HasArrayPart(syntax_asdl::CompoundWord*) 0.06% 1 osh oils-for-unix [.] word_::TildeDetectAssign(syntax_asdl::CompoundWord*) 0.06% 1 osh oils-for-unix [.] word_parse::WordParser::_ParseVarExpr(types_asdl::lex_mode_e, bool) 0.06% 1 osh oils-for-unix [.] word_parse::WordParser::_ParseVarOf() # # (Cannot load tips.txt file, please install perf!) #