{"id":16301554,"url":"https://github.com/timo/moarperf","last_synced_at":"2025-03-20T21:31:04.500Z","repository":{"id":37570103,"uuid":"144857676","full_name":"timo/moarperf","owner":"timo","description":"tool to analyze performance of Raku programs running on moarvm","archived":false,"fork":false,"pushed_at":"2023-01-04T22:04:35.000Z","size":1095,"stargazers_count":12,"open_issues_count":16,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-11T20:55:13.380Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-15T13:37:17.000Z","updated_at":"2023-05-04T10:17:28.000Z","dependencies_parsed_at":"2023-02-02T21:32:01.758Z","dependency_job_id":null,"html_url":"https://github.com/timo/moarperf","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fmoarperf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fmoarperf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fmoarperf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo%2Fmoarperf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timo","download_url":"https://codeload.github.com/timo/moarperf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244084254,"owners_count":20395516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T20:55:03.558Z","updated_at":"2025-03-20T21:31:04.047Z","avatar_url":"https://github.com/timo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rakudo Profiler Front-End\n\nMoarperf is a tool that takes the output of the Rakudo Perl 6 profilers available on MoarVM and makes them viewable with a web browser.\n\nDepending on whether you pass an \"instrumented profiler\" file (`.sql`) or a \"heap snapshot file\" (`.mvmheap`), you will get one or the other profiler frontend.\n\nRunning your perl6 program with `--profile=foo.sql` or `--profile=bar.mvmheap` will generate a file for you. Additionally, the `Telemetry` module that comes with Rakudo offers a `snap` sub that takes a `:heap` argument that lets you create heap snapshots at specific points in your program, rather than whenever the GC runs.\n\n# Installing the Front-end\n\n## AppImage\n\nThere is a version of moarperf for linux that is packaged as an AppImage, which is a single file that can be executed directly. It contains a full rakudo of its own and does not require any kind of installation. You can find it on [the \"releases\" page of the moarperf repo](https://github.com/timo/moarperf/releases/).\n\n## Traditional Installation\n\nThe Perl 6/Raku part of the program has some dependencies that can be installed with `zef`. The command to do that is `zef install --depsonly .` - but if you want it a bit faster, you can `--/tests` to skip testing modules before installation.\n\nThe javascript portion of the program has - like any javascript application seems to, nowadays - a boatload of dependencies. That's why there's pre-built packages up on github that have the javascript portion already \"compiled\". You can find them on [the \"releases\" page of the moarperf repo](https://github.com/timo/moarperf/releases/) \n\n# Building the front-end javascript code from source\n\nStart with a clone of the repository. There should be a `frontend` folder with a `package.json` file, which is what `npm` and friends work with. Change into the `frontend` folder and run `npm install .`, which will download a whole lot of javascript packages. There are often some errors or warnings, but they can mostly be ignored.\n\nFinally, compile the frontend code with the command `npm run build`. After it outputs a colorful list of files with file sizes and such, but it's not exiting, the `webpack.config.js` may still have `watch: true` turned on, in which case the build script will keep running and check for changes you make to the source files to immediately recompile.\n\n\n# Running the front-end\n\nAfter installing the perl6/raku dependencies and either extracting the release tarball, or building the javascript code from source, you can run `perl6 -I . service.p6` in the root folder to start the program. That is where `META6.json` lives. By default it will offer a web interface on http://localhost:20000, but environment variables `MOARPERF_HOST` and `MOARPERF_PORT` can be used to change that. Passing a filename, either a `.sql`, a `.sqlite3`, or a `.mvmheap` file, will immediately load the data in question.\n\n# More info\n\nMy blog on https://wakelift.de has a couple of posts that explain aspects of the program.\n\nThe program's development is funded by a grant from The Perl Foundation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimo%2Fmoarperf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimo%2Fmoarperf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimo%2Fmoarperf/lists"}