# 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.): 124300000 # # Overhead Samples Command Shared Object Symbol # ........ ............ ....... .................... ....................................................................................................................................................................................................................................................... # 7.96% 99 osh oils-for-unix [.] MarkSweepHeap::Allocate(unsigned long, int*, int*) 4.18% 52 osh oils-for-unix [.] Dict::hash_and_probe(BigStr*) const 2.98% 37 osh oils-for-unix [.] MarkSweepHeap::Sweep() 2.65% 33 osh oils-for-unix [.] state::Mem::_ResolveNameOrRef(BigStr*, runtime_asdl::scope_e, List*) 2.33% 29 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) 2.25% 28 osh oils-for-unix [.] BigStr::hash(unsigned int (*)(char const*, int)) 2.25% 28 osh oils-for-unix [.] state::Mem::GetValue(BigStr*, runtime_asdl::scope_e) 1.85% 23 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 1.85% 23 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) 1.77% 22 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::_EvalWordPart(syntax_asdl::word_part_t*, List*, int) 1.53% 19 osh oils-for-unix [.] MarkSweepHeap::TraceChildren() 1.53% 19 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::_EvalSimpleVarSub(syntax_asdl::SimpleVarSub*, List*, bool) 1.45% 18 osh oils-for-unix [.] sh_expr_eval::ArithEvaluator::Eval(syntax_asdl::arith_expr_t*) 1.45% 18 osh oils-for-unix [.] state::Mem::_ResolveNameOnly(BigStr*, runtime_asdl::scope_e) 1.37% 17 osh oils-for-unix [.] split::IfsSplitter::Split(BigStr*, bool) 1.37% 17 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::EvalWordSequence2(List*, bool, bool) 1.29% 16 osh oils-for-unix [.] executor::ShellExecutor::PopProcessSub(runtime_asdl::StatusArray*) 1.21% 15 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 1.21% 15 osh oils-for-unix [.] MarkSweepHeap::MaybeMarkAndPush(RawObject*) 1.21% 15 osh oils-for-unix [.] cmd_eval::CommandEvaluator::RunPendingTraps() 1.13% 14 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_DoShAssignment(syntax_asdl::command__ShAssignment*, runtime_asdl::CommandStatus*) 1.13% 14 osh oils-for-unix [.] sh_expr_eval::ArithEvaluator::_StringToBigInt(BigStr*, syntax_asdl::loc_t*) 1.05% 13 osh oils-for-unix [.] keys_equal(BigStr*, BigStr*) 0.97% 12 osh oils-for-unix [.] Dict::find_kv_index(BigStr*) const 0.97% 12 osh oils-for-unix [.] glob_::GlobUnescape(BigStr*) 0.97% 12 osh oils-for-unix [.] word_::FastStrEval(syntax_asdl::CompoundWord*) 0.97% 12 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::_EvalWordFrame(List*, List*) 0.80% 10 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.80% 10 osh oils-for-unix [.] bracket_osh::Test::Run(runtime_asdl::cmd_value__Argv*) 0.80% 10 osh oils-for-unix [.] sh_expr_eval::ArithEvaluator::EvalToBigInt(syntax_asdl::arith_expr_t*) 0.80% 10 osh oils-for-unix [.] trap_osh::TrapState::GetPendingTraps() 0.80% 10 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::EvalRhsWord(syntax_asdl::rhs_word_t*) 0.80% 10 osh oils-for-unix [.] word_eval::_ValueToPartValue(value_asdl::value_t*, bool, syntax_asdl::word_part_t*) 0.72% 9 osh oils-for-unix [.] BigStr::replace(BigStr*, BigStr*, int) 0.72% 9 osh oils-for-unix [.] List*>::reserve(int) [clone .part.0] 0.72% 9 osh oils-for-unix [.] List* Alloc>() 0.72% 9 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::_PartValsToString(List*, syntax_asdl::CompoundWord*, int, List*) 0.64% 8 osh oils-for-unix [.] BigStr::startswith(BigStr*) 0.64% 8 osh oils-for-unix [.] Dict::hash_and_probe(BigStr*) const 0.64% 8 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.64% 8 osh oils-for-unix [.] braces::BraceExpandWords(List*) 0.56% 7 osh libc.so.6 [.] _IO_default_xsputn 0.56% 7 osh oils-for-unix [.] List::append(runtime_asdl::StatusArray*) 0.56% 7 osh oils-for-unix [.] bracket_osh::_StringWordEmitter::ReadWord(types_asdl::lex_mode_e) 0.56% 7 osh oils-for-unix [.] split::_SpansToParts(BigStr*, List*>*) 0.56% 7 osh oils-for-unix [.] state::Mem::ScopesForReading() 0.56% 7 osh oils-for-unix [.] state::Mem::SetValue(value_asdl::sh_lvalue_t*, value_asdl::value_t*, runtime_asdl::scope_e, int) 0.56% 7 osh oils-for-unix [.] word_eval::_MakeWordFrames(List*) 0.48% 6 osh oils-for-unix [.] Dict::at(BigStr*) const 0.48% 6 osh oils-for-unix [.] List* Alloc>() 0.48% 6 osh oils-for-unix [.] dev::Tracer::OnBuiltin(int, List*) 0.48% 6 osh oils-for-unix [.] dev::Tracer::OnShAssignment(value_asdl::sh_lvalue_t*, syntax_asdl::assign_op_e, value_asdl::value_t*, int, runtime_asdl::scope_e) 0.48% 6 osh oils-for-unix [.] executor::ShellExecutor::RunSimpleCommand(runtime_asdl::cmd_value__Argv*, runtime_asdl::CommandStatus*, int) 0.48% 6 osh oils-for-unix [.] sh_expr_eval::ArithEvaluator::_ValToIntOrError(value_asdl::value_t*, syntax_asdl::arith_expr_t*) 0.48% 6 osh oils-for-unix [.] split::SplitContext::_GetSplitter(BigStr*) 0.48% 6 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::EvalWordToString(syntax_asdl::word_t*, int) 0.48% 6 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::_EvalWordToParts(syntax_asdl::CompoundWord*, List*, int) 0.40% 5 osh libc.so.6 [.] malloc 0.40% 5 osh oils-for-unix [.] BigStr::slice(int, int) 0.40% 5 osh oils-for-unix [.] Dict::hash_and_probe(int) const 0.40% 5 osh oils-for-unix [.] List::append(executor::_ProcessSubFrame*) 0.40% 5 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.40% 5 osh oils-for-unix [.] StringToInt64(char const*, int, int, long*) 0.40% 5 osh oils-for-unix [.] dev::Tracer::OnSimpleCommand(List*) 0.40% 5 osh oils-for-unix [.] dev::Tracer::_ShTraceBegin() 0.40% 5 osh oils-for-unix [.] executor::ShellExecutor::RunBuiltin(int, runtime_asdl::cmd_value__Argv*) 0.40% 5 osh oils-for-unix [.] glob_::LooksLikeGlob(BigStr*) 0.40% 5 osh oils-for-unix [.] lexer::LazyStr(syntax_asdl::Token*) 0.40% 5 osh oils-for-unix [.] syntax_asdl::loc__Arith* Alloc(syntax_asdl::arith_expr_t*&) 0.40% 5 osh oils-for-unix [.] value_asdl::LeftName* Alloc(BigStr*&, syntax_asdl::Token*&) 0.40% 5 osh oils-for-unix [.] word_eval::AbstractWordEvaluator::_EmptyStrOrError(value_asdl::value_t*, syntax_asdl::Token*) 0.32% 4 osh [kernel.kallsyms] [k] 0xffffffff910ae7a3 0.32% 4 osh libc.so.6 [.] __snprintf_chk 0.32% 4 osh libc.so.6 [.] 0x00000000001992c0 0.32% 4 osh libc.so.6 [.] 0x0000000000199d7d 0.32% 4 osh oils-for-unix [.] BigStr::join(List*) 0.32% 4 osh oils-for-unix [.] List::at(int) 0.32% 4 osh oils-for-unix [.] List*>::at(int) 0.32% 4 osh oils-for-unix [.] List*>::append(Tuple2*) 0.32% 4 osh oils-for-unix [.] List* Alloc>() 0.32% 4 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_DoSimple(syntax_asdl::command__Simple*, runtime_asdl::CommandStatus*) 0.32% 4 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_MaybeRunDebugTrap() 0.32% 4 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_RunSimpleCommand(runtime_asdl::cmd_value_t*, runtime_asdl::CommandStatus*, int) 0.32% 4 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_StrictErrExitList(List*) 0.32% 4 osh oils-for-unix [.] consts::LookupNormalBuiltin(BigStr*) 0.32% 4 osh oils-for-unix [.] executor::ShellExecutor::PushProcessSub() 0.32% 4 osh oils-for-unix [.] hash_key(int) 0.32% 4 osh oils-for-unix [.] mylib::BufWriter::EnsureMoreSpace(int) 0.32% 4 osh oils-for-unix [.] mylib::BufWriter::write(BigStr*) 0.32% 4 osh oils-for-unix [.] runtime_asdl::Piece* Alloc(BigStr*&, bool&, bool&&) 0.32% 4 osh oils-for-unix [.] runtime_asdl::VarSubState* Alloc(bool&&, bool&&, bool&&) 0.32% 4 osh oils-for-unix [.] trap_osh::TrapState::GetHook(BigStr*) 0.24% 3 osh libc.so.6 [.] 0x0000000000047693 0.24% 3 osh libc.so.6 [.] 0x00000000001a0f90 0.24% 3 osh oils-for-unix [.] List::pop() 0.24% 3 osh oils-for-unix [.] List* Alloc>() 0.24% 3 osh oils-for-unix [.] MarkSweepHeap::MaybeCollect() 0.24% 3 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_ExecuteList(List*) 0.24% 3 osh oils-for-unix [.] consts::IfsEdge(int, int) 0.24% 3 osh oils-for-unix [.] match::BracketBinary(BigStr*) 0.24% 3 osh oils-for-unix [.] mylib::split_once(BigStr*, BigStr*) 0.24% 3 osh oils-for-unix [.] runtime_asdl::Piece* Alloc(BigStr*&&, bool&, bool&&) 0.24% 3 osh oils-for-unix [.] sh_expr_eval::ArithEvaluator::EvalShellLhs(syntax_asdl::sh_lhs_t*, runtime_asdl::scope_e) 0.24% 3 osh oils-for-unix [.] state::Mem::SetNamed(value_asdl::LeftName*, value_asdl::value_t*, runtime_asdl::scope_e, int) 0.24% 3 osh oils-for-unix [.] syntax_asdl::loc__Word* Alloc(syntax_asdl::word_t*&) 0.16% 2 osh [kernel.kallsyms] [k] 0xffffffff91412d9c 0.16% 2 osh [kernel.kallsyms] [k] 0xffffffff91f696c7 0.16% 2 osh [kernel.kallsyms] [k] 0xffffffff91feb679 0.16% 2 osh libc.so.6 [.] _IO_fflush 0.16% 2 osh libc.so.6 [.] 0x0000000000047594 0.16% 2 osh libc.so.6 [.] 0x00000000000475b3 0.16% 2 osh libc.so.6 [.] 0x0000000000047691 0.16% 2 osh libc.so.6 [.] 0x00000000000476be 0.16% 2 osh libc.so.6 [.] 0x00000000000477cf 0.16% 2 osh libc.so.6 [.] 0x000000000005a2ef 0.16% 2 osh libc.so.6 [.] 0x0000000000075a11 0.16% 2 osh libc.so.6 [.] 0x00000000000884ae 0.16% 2 osh libc.so.6 [.] 0x000000000008fa43 0.16% 2 osh libc.so.6 [.] 0x0000000000199324 0.16% 2 osh libc.so.6 [.] 0x0000000000199b68 0.16% 2 osh libc.so.6 [.] 0x0000000000199d79 0.16% 2 osh libc.so.6 [.] 0x0000000000199d83 0.16% 2 osh libc.so.6 [.] 0x0000000000199de2 0.16% 2 osh libc.so.6 [.] 0x00000000001a0faa 0.16% 2 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.16% 2 osh oils-for-unix [.] List::at(int) 0.16% 2 osh oils-for-unix [.] List::append(mylib::BufWriter*) 0.16% 2 osh oils-for-unix [.] List* Alloc>() 0.16% 2 osh oils-for-unix [.] List::at(int) 0.16% 2 osh oils-for-unix [.] List::append(syntax_asdl::loc_t*) 0.16% 2 osh oils-for-unix [.] bracket_osh::_WordEvaluator::EvalWordToString(syntax_asdl::word_t*, int) 0.16% 2 osh oils-for-unix [.] cmd_eval::CommandEvaluator::_CheckStatus(int, runtime_asdl::CommandStatus*, syntax_asdl::command_t*, syntax_asdl::loc_t*) 0.16% 2 osh oils-for-unix [.] dev::Tracer::_RichTraceBegin(BigStr*) 0.16% 2 osh oils-for-unix [.] hash_key(BigStr*) 0.16% 2 osh oils-for-unix [.] io_osh::Echo::Run(runtime_asdl::cmd_value__Argv*) 0.16% 2 osh oils-for-unix [.] mops::FromStr(BigStr*, int) 0.16% 2 osh oils-for-unix [.] mops::ToStr(long) 0.16% 2 osh oils-for-unix [.] sh_expr_eval::BoolEvaluator::EvalB(syntax_asdl::bool_expr_t*) 0.16% 2 osh oils-for-unix [.] sh_expr_eval::BoolEvaluator::_StringToBigIntOrError(BigStr*, syntax_asdl::word_t*) 0.16% 2 osh oils-for-unix [.] state::Mem::SetTokenForLine(syntax_asdl::Token*) 0.16% 2 osh oils-for-unix [.] state::Procs::Get(BigStr*) 0.16% 2 osh oils-for-unix [.] str_equals_c(BigStr*, char const*, int) 0.16% 2 osh oils-for-unix [.] ui::ctx_Location::~ctx_Location() 0.16% 2 osh oils-for-unix [.] value_asdl::value__Str* Alloc(BigStr*&&) 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff910c6566 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91118bd4 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9132e19b 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9134c2b8 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91398fc0 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913a2b7c 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913a2b7e 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913a2b97 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913a4851 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913a66f0 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913a7ee0 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913aa22f 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913ad177 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913c40ac 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff913c6391 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9143aa78 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9143bbca 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9143e90b 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff914828e6 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91487138 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91487143 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9154ff84 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff915aaa3a 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9162e596 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff916fbbd4 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff916fcfc5 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff9176e105 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91774c22 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91f49044 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91f4933a 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91f54c1d 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91f69c86 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91fd861b 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91fe60b0 0.08% 1 osh [kernel.kallsyms] [k] 0xffffffff91febce0 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b736 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b791 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c14e 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000011429 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000012eef 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000016714 0.08% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000018408 0.08% 1 osh libc.so.6 [.] _IO_setb 0.08% 1 osh libc.so.6 [.] __errno_location 0.08% 1 osh libc.so.6 [.] 0x0000000000047548 0.08% 1 osh libc.so.6 [.] 0x0000000000047558 0.08% 1 osh libc.so.6 [.] 0x0000000000047561 0.08% 1 osh libc.so.6 [.] 0x0000000000047585 0.08% 1 osh libc.so.6 [.] 0x00000000000475f8 0.08% 1 osh libc.so.6 [.] 0x000000000004765d 0.08% 1 osh libc.so.6 [.] 0x0000000000047661 0.08% 1 osh libc.so.6 [.] 0x0000000000047665 0.08% 1 osh libc.so.6 [.] 0x0000000000047671 0.08% 1 osh libc.so.6 [.] 0x00000000000477e1 0.08% 1 osh libc.so.6 [.] 0x00000000000477e9 0.08% 1 osh libc.so.6 [.] 0x000000000005a234 0.08% 1 osh libc.so.6 [.] 0x00000000000750a2 0.08% 1 osh libc.so.6 [.] 0x0000000000075137 0.08% 1 osh libc.so.6 [.] 0x0000000000075224 0.08% 1 osh libc.so.6 [.] 0x0000000000075243 0.08% 1 osh libc.so.6 [.] 0x0000000000075bb3 0.08% 1 osh libc.so.6 [.] 0x0000000000075f20 0.08% 1 osh libc.so.6 [.] 0x0000000000075f46 0.08% 1 osh libc.so.6 [.] 0x0000000000075ff3 0.08% 1 osh libc.so.6 [.] 0x0000000000076dd7 0.08% 1 osh libc.so.6 [.] 0x0000000000088417 0.08% 1 osh libc.so.6 [.] 0x000000000008842d 0.08% 1 osh libc.so.6 [.] 0x000000000008e5ea 0.08% 1 osh libc.so.6 [.] 0x000000000008e6cb 0.08% 1 osh libc.so.6 [.] 0x000000000008fa48 0.08% 1 osh libc.so.6 [.] 0x000000000008fa4a 0.08% 1 osh libc.so.6 [.] 0x00000000000a4461 0.08% 1 osh libc.so.6 [.] 0x0000000000199328 0.08% 1 osh libc.so.6 [.] 0x0000000000199b60 0.08% 1 osh libc.so.6 [.] 0x0000000000199d63 0.08% 1 osh libc.so.6 [.] 0x0000000000199da3 0.08% 1 osh libc.so.6 [.] 0x000000000019d43c 0.08% 1 osh libc.so.6 [.] 0x00000000001a07c0 0.08% 1 osh libc.so.6 [.] 0x00000000001a07c7 0.08% 1 osh libc.so.6 [.] 0x00000000001a0806 0.08% 1 osh libc.so.6 [.] 0x00000000001a0812 0.08% 1 osh libc.so.6 [.] 0x00000000001a0f80 0.08% 1 osh libc.so.6 [.] 0x00000000001a0f84 0.08% 1 osh libc.so.6 [.] 0x00000000001a0f8b 0.08% 1 osh libc.so.6 [.] 0x00000000001a0fa4 0.08% 1 osh libstdc++.so.6.0.30 [.] operator delete(void*) 0.08% 1 osh oils-for-unix [.] Dict::find_kv_index(BigStr*) const 0.08% 1 osh oils-for-unix [.] Dict::reserve(int) 0.08% 1 osh oils-for-unix [.] List*>::at(int) 0.08% 1 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.08% 1 osh oils-for-unix [.] List::extend(List*) 0.08% 1 osh oils-for-unix [.] List* Alloc>() 0.08% 1 osh oils-for-unix [.] List::pop() [clone .isra.0] 0.08% 1 osh oils-for-unix [.] bracket_osh::_ThreeArgs(bracket_osh::_StringWordEmitter*) 0.08% 1 osh oils-for-unix [.] consts::LookupAssignBuiltin(BigStr*) 0.08% 1 osh oils-for-unix [.] match::BracketOther(BigStr*) 0.08% 1 osh oils-for-unix [.] match::BracketUnary(BigStr*) 0.08% 1 osh oils-for-unix [.] memcmp@plt 0.08% 1 osh oils-for-unix [.] mylib::CFile::write(BigStr*) 0.08% 1 osh oils-for-unix [.] mylib::JoinBytes(List*) 0.08% 1 osh oils-for-unix [.] runtime_asdl::cmd_value__Argv* Alloc*&, List*&, bool&, decltype(nullptr)>(List*&, List*&, bool&, decltype(nullptr)&&) [clone .isra.0] 0.08% 1 osh oils-for-unix [.] sh_expr_eval::BoolEvaluator::_EvalCompoundWord(syntax_asdl::word_t*, int) 0.08% 1 osh oils-for-unix [.] split::SplitContext::SplitForWordEval(BigStr*, BigStr*) 0.08% 1 osh oils-for-unix [.] state::MutableOpts::Get(int) 0.08% 1 osh oils-for-unix [.] state::MutableOpts::Push(int, bool) 0.08% 1 osh oils-for-unix [.] state::ctx_ErrExit::ctx_ErrExit(state::MutableOpts*, bool, syntax_asdl::Token*) 0.08% 1 osh oils-for-unix [.] std::__detail::_BracketMatcher, false, false>::_M_ready() 0.08% 1 osh oils-for-unix [.] value_asdl::value__Str* Alloc(BigStr*&) 0.08% 1 osh oils-for-unix [.] word_eval::_BackslashEscape(BigStr*) # # (Cannot load tips.txt file, please install perf!) #