# To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 1K of event 'cpu-clock:ppp' # Event count (approx.): 157900000 # # Overhead Samples Command Shared Object Symbol # ........ ............ ....... .................... ............................................................................................................................................................................................................................. # 27.49% 434 osh oils-for-unix [.] MarkSweepHeap::MaybeMarkAndPush(RawObject*) 13.05% 206 osh oils-for-unix [.] MarkSweepHeap::TraceChildren() 6.08% 96 osh oils-for-unix [.] MarkSweepHeap::Allocate(unsigned long, int*, int*) 5.19% 82 osh oils-for-unix [.] MarkSweepHeap::Sweep() 2.60% 41 osh oils-for-unix [.] match::OneToken(types_asdl::lex_mode_e, BigStr*, int) 2.28% 36 osh oils-for-unix [.] cmd_parse::CommandParser::_GetWord() 1.77% 28 osh oils-for-unix [.] lexer::LineLexer::Read(types_asdl::lex_mode_e) 1.65% 26 osh [kernel.kallsyms] [k] 0xffffffff8aeae7a3 1.65% 26 osh oils-for-unix [.] alloc::Arena::NewToken(int, int, int, syntax_asdl::SourceLine*) 1.33% 21 osh [kernel.kallsyms] [k] 0xffffffff8bdeb679 1.14% 18 osh oils-for-unix [.] word_parse::WordParser::_ReadCompoundWord3(types_asdl::lex_mode_e, int, bool) 1.08% 17 osh [kernel.kallsyms] [k] 0xffffffff8bd696c7 1.08% 17 osh oils-for-unix [.] lexer::Lexer::_Read(types_asdl::lex_mode_e) 1.08% 17 osh oils-for-unix [.] process::ChildStateChange::ApplyFromParent(process::Process*) 0.89% 14 osh libc.so.6 [.] malloc 0.89% 14 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.82% 13 osh oils-for-unix [.] word_::CommandId(syntax_asdl::word_t*) 0.82% 13 osh oils-for-unix [.] word_::LiteralId(syntax_asdl::word_part_t*) 0.70% 11 osh oils-for-unix [.] List::at(int) 0.70% 11 osh oils-for-unix [.] word_parse::WordParser::_GetToken() 0.70% 11 osh oils-for-unix [.] word_parse::WordParser::_ReadWord(types_asdl::lex_mode_e) 0.57% 9 osh oils-for-unix [.] lexer::Lexer::Read(types_asdl::lex_mode_e) 0.51% 8 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandTerm() 0.51% 8 osh oils-for-unix [.] cmd_parse::CommandParser::_ScanSimpleCommand() 0.51% 8 osh oils-for-unix [.] word_parse::WordParser::_MaybeReadWordPart(bool, types_asdl::lex_mode_e, List*) 0.44% 7 osh libc.so.6 [.] __getdelim 0.44% 7 osh oils-for-unix [.] BigStr::slice(int, int) 0.44% 7 osh oils-for-unix [.] consts::GetKind(unsigned short) 0.44% 7 osh oils-for-unix [.] word_::CommandKind(syntax_asdl::word_t*) 0.44% 7 osh oils-for-unix [.] word_::TildeDetect2(syntax_asdl::CompoundWord*) 0.38% 6 osh [kernel.kallsyms] [k] 0xffffffff8b1a2704 0.38% 6 osh oils-for-unix [.] List* Alloc>() 0.38% 6 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.38% 6 osh oils-for-unix [.] word_parse::WordParser::ReadWord(types_asdl::lex_mode_e) 0.32% 5 osh [kernel.kallsyms] [k] 0xffffffff8b1a2b97 0.32% 5 osh libc.so.6 [.] cfree 0.32% 5 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.32% 5 osh oils-for-unix [.] cmd_parse::CommandParser::ParsePipeline() 0.32% 5 osh oils-for-unix [.] cmd_parse::CommandParser::ParseSimpleCommand() 0.32% 5 osh oils-for-unix [.] cmd_parse::_SplitSimpleCommandPrefix(List*) 0.32% 5 osh oils-for-unix [.] mylib::CFile::readline() 0.32% 5 osh oils-for-unix [.] word_parse::WordParser::LookAheadFuncParens() 0.25% 4 osh libc.so.6 [.] 0x00000000000a48b0 0.25% 4 osh oils-for-unix [.] BigStr::isupper() 0.25% 4 osh oils-for-unix [.] BigStr::join(List*) 0.25% 4 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCommand() 0.25% 4 osh oils-for-unix [.] cmd_parse::CommandParser::ParseIf() 0.19% 3 osh oils-for-unix [.] List* Alloc>() 0.19% 3 osh oils-for-unix [.] alloc::Arena::AddLine(BigStr*, int) 0.19% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_Eat(int, BigStr*) 0.19% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseAndOr() 0.19% 3 osh oils-for-unix [.] cmd_parse::_MakeSimpleCommand(List*, List*, syntax_asdl::ArgList*, syntax_asdl::LiteralBlock*) 0.19% 3 osh oils-for-unix [.] memcpy@plt 0.19% 3 osh oils-for-unix [.] reader::FileLineReader::_GetLine() 0.19% 3 osh oils-for-unix [.] syntax_asdl::CompoundWord* Alloc*>(List*&&) 0.19% 3 osh oils-for-unix [.] word_::StaticEval(syntax_asdl::word_t*) 0.19% 3 osh oils-for-unix [.] word_::_EvalWordPart(syntax_asdl::word_part_t*) 0.19% 3 osh oils-for-unix [.] word_parse::WordParser::_ReadLikeDQ(syntax_asdl::Token*, bool, List*) 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8aeae83e 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8af688a7 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b1ad03f 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b1ad2f6 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b1c13f2 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b1cf94c 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b1d67b0 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b1fff8d 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b238fa8 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b23bbca 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b23e90b 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b25d239 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8b522fc2 0.13% 2 osh libc.so.6 [.] brk 0.13% 2 osh libc.so.6 [.] 0x00000000000a3e62 0.13% 2 osh libc.so.6 [.] 0x00000000000a3f16 0.13% 2 osh libc.so.6 [.] 0x00000000001993da 0.13% 2 osh libc.so.6 [.] 0x00000000001a07f3 0.13% 2 osh libc.so.6 [.] 0x00000000001a104a 0.13% 2 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.13% 2 osh oils-for-unix [.] List::append(syntax_asdl::IfArm*) 0.13% 2 osh oils-for-unix [.] List::append(syntax_asdl::SourceLine*) 0.13% 2 osh oils-for-unix [.] StripAny(BigStr*, StripWhere, int) 0.13% 2 osh oils-for-unix [.] cmd_parse::CommandParser::ParseRedirect() 0.13% 2 osh oils-for-unix [.] cmd_parse::CommandParser::_MaybeExpandAliases(List*) 0.13% 2 osh oils-for-unix [.] cmd_parse::_AppendMoreEnv(List*, List*) 0.13% 2 osh oils-for-unix [.] cmd_parse::_MakeAssignPair(parse_lib::ParseContext*, syntax_asdl::ParsedAssignment*, alloc::Arena*) 0.13% 2 osh oils-for-unix [.] reader::VirtualLineReader::GetLine() 0.13% 2 osh oils-for-unix [.] reader::_Reader::GetLine() 0.13% 2 osh oils-for-unix [.] syntax_asdl::DoubleQuoted* Alloc*&, syntax_asdl::Token*&>(syntax_asdl::Token*&, List*&, syntax_asdl::Token*&) 0.13% 2 osh oils-for-unix [.] word_::TildeDetect(syntax_asdl::word_t*) 0.13% 2 osh oils-for-unix [.] word_::TildeDetectAssign(syntax_asdl::CompoundWord*) 0.13% 2 osh oils-for-unix [.] word_parse::WordParser::_ReadUnquotedLeftParts(syntax_asdl::BoolParamBox*) 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8aeae80a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8af060f7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8af9d55c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8affa0f2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b128554 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b138780 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b15e357 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b15e835 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b15e9d3 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b15ea5d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1806a9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a25ea 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a4e33 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a53a7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a5489 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a54e0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a54e9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a557b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a564c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a572c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a5ae8 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a6577 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a65d2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1a69b1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1aa237 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1aa562 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1aa584 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad131 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad2fa 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad303 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad731 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad79e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad7b1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad7d8 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad7db 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad7f7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad899 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ad8a1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1b32a5 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1b70e0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1b74f1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1b7585 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1b9aca 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1c133c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1c3d7d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d2535 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d433b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d43dd 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d4ac0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d5c26 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d66ab 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d66bb 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d682f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d7d52 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d7d5f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d7db1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1d86be 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1e9ad6 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1fc496 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1fc4f0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1fc4f5 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b1ffff1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b212c36 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b212c4b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b214170 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b21449e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b21458e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b214a8d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b214c84 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b238f91 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b23aa56 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b23bb19 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b23bba9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b23c810 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b23c832 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b23e880 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b240243 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b24026a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b25d249 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b263ece 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b273dbf 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b282fc2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b285a3d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b285a42 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b2871e9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b42ce14 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b522faa 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b522fac 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b56a420 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b56c0a2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8b6308df 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd490ab 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd49105 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd4918a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd49d02 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd4a15e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd4a9b0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bd4e852 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bde506e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bdebce0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bded040 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffff8bf04104 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b734 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c14b 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000001cfac 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000027247 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000027266 0.06% 1 osh libc.so.6 [.] __ctype_b_loc 0.06% 1 osh libc.so.6 [.] read 0.06% 1 osh libc.so.6 [.] 0x00000000000a174d 0.06% 1 osh libc.so.6 [.] 0x00000000000a18d6 0.06% 1 osh libc.so.6 [.] 0x00000000000a26a0 0.06% 1 osh libc.so.6 [.] 0x00000000000a26a4 0.06% 1 osh libc.so.6 [.] 0x00000000000a26c5 0.06% 1 osh libc.so.6 [.] 0x00000000000a2709 0.06% 1 osh libc.so.6 [.] 0x00000000000a2e54 0.06% 1 osh libc.so.6 [.] 0x00000000000a324b 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e0e 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e3a 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e4e 0.06% 1 osh libc.so.6 [.] 0x00000000000a3f83 0.06% 1 osh libc.so.6 [.] 0x00000000000a422f 0.06% 1 osh libc.so.6 [.] 0x00000000000a4271 0.06% 1 osh libc.so.6 [.] 0x00000000000a4399 0.06% 1 osh libc.so.6 [.] 0x00000000000a4633 0.06% 1 osh libc.so.6 [.] 0x00000000000a4897 0.06% 1 osh libc.so.6 [.] 0x00000000000a48b4 0.06% 1 osh libc.so.6 [.] 0x00000000001992f0 0.06% 1 osh libc.so.6 [.] 0x0000000000199330 0.06% 1 osh libc.so.6 [.] 0x0000000000199374 0.06% 1 osh libc.so.6 [.] 0x00000000001993b2 0.06% 1 osh libc.so.6 [.] 0x0000000000199dea 0.06% 1 osh libc.so.6 [.] 0x000000000019d1ca 0.06% 1 osh libc.so.6 [.] 0x00000000001a07e1 0.06% 1 osh libc.so.6 [.] 0x00000000001a07e5 0.06% 1 osh libc.so.6 [.] 0x00000000001a07f8 0.06% 1 osh libc.so.6 [.] 0x00000000001a0826 0.06% 1 osh libc.so.6 [.] 0x00000000001a0836 0.06% 1 osh libc.so.6 [.] 0x00000000001a0887 0.06% 1 osh libc.so.6 [.] 0x00000000001a0a64 0.06% 1 osh libc.so.6 [.] 0x00000000001a0f80 0.06% 1 osh libc.so.6 [.] 0x00000000001a0f84 0.06% 1 osh libc.so.6 [.] 0x00000000001a0fa4 0.06% 1 osh libgcc_s.so.1 [.] __cpu_indicator_init 0.06% 1 osh libstdc++.so.6.0.30 [.] std::__timepunct::__timepunct(std::__timepunct_cache*, unsigned long) 0.06% 1 osh oils-for-unix [.] BigStr::endswith(BigStr*) 0.06% 1 osh oils-for-unix [.] BigStr::find(BigStr*, int, int) 0.06% 1 osh oils-for-unix [.] Dict::find_kv_index(BigStr*) const 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*>::append(Tuple2*) 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* Alloc>() 0.06% 1 osh oils-for-unix [.] List* Alloc>() 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::ParseBraceGroup() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCompoundCommand() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseConditionList() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseForEachLoop(syntax_asdl::Token*) 0.06% 1 osh oils-for-unix [.] lexer::IsPlusEquals(syntax_asdl::Token*) 0.06% 1 osh oils-for-unix [.] lexer::LineLexer::GetEofToken(int) 0.06% 1 osh oils-for-unix [.] lexer::LineLexer::LookAheadOne(types_asdl::lex_mode_e) 0.06% 1 osh oils-for-unix [.] lexer::TokenSliceRight(syntax_asdl::Token*, int) 0.06% 1 osh oils-for-unix [.] main_loop::ParseWholeFile(cmd_parse::CommandParser*) 0.06% 1 osh oils-for-unix [.] parse_lib::_BaseTrail::SetLatestWords(List*, List*) 0.06% 1 osh oils-for-unix [.] state::_AnyOptionNum(BigStr*) 0.06% 1 osh oils-for-unix [.] syntax_asdl::pat__Words* Alloc*&>(List*&) 0.06% 1 osh oils-for-unix [.] word_::AsKeywordToken(syntax_asdl::word_t*) 0.06% 1 osh oils-for-unix [.] word_::DetectShAssignment(syntax_asdl::CompoundWord*) 0.06% 1 osh oils-for-unix [.] word_::TildeDetectAll(List*) 0.06% 1 osh oils-for-unix [.] word_parse::WordParser::_ParseVarOf() 0.06% 1 osh oils-for-unix [.] word_parse::WordParser::_ReadDoubleQuoted(syntax_asdl::Token*) # # (Cannot load tips.txt file, please install perf!) #