{"id":17123802,"url":"https://github.com/portnov/hpview","last_synced_at":"2025-07-25T03:31:51.393Z","repository":{"id":137583692,"uuid":"201729748","full_name":"portnov/hpview","owner":"portnov","description":"GHC's .hp files viewer","archived":false,"fork":false,"pushed_at":"2023-10-29T09:32:33.000Z","size":64,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-15T18:27:14.901Z","etag":null,"topics":["ghc","gtk3","haskell","profiling"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/portnov.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-08-11T06:59:25.000Z","updated_at":"2023-10-29T09:32:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"406040bd-1c7d-4384-b779-ee7162ba2cbc","html_url":"https://github.com/portnov/hpview","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portnov%2Fhpview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portnov%2Fhpview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portnov%2Fhpview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portnov%2Fhpview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/portnov","download_url":"https://codeload.github.com/portnov/hpview/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227512955,"owners_count":17782632,"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":["ghc","gtk3","haskell","profiling"],"created_at":"2024-10-14T18:27:16.257Z","updated_at":"2024-12-01T07:43:27.417Z","avatar_url":"https://github.com/portnov.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"hpview README\n=============\n\n[![Build Status](https://travis-ci.org/portnov/hpview.svg?branch=master)](https://travis-ci.org/portnov/hpview)\n\n`hpview` is a GHC's `.hp` (heap profile) files viewer, implemented in Haskell + Gtk3.\n\n![Screenshot](https://user-images.githubusercontent.com/284644/63450688-f7cd3680-c45b-11e9-900a-245bfa9cb444.png)\n\nIt may be nicer than use of [hp2pretty][1] because of the follwing features:\n\n* No need to convert `.hp` to `.svg` and then open `.svg` with another program,\n  just run `hpview file.hp`.\n* Areas on plot are higlighted interactively (on mouse-over), and name of\n  selected area is displayed in the statusbar. Statusbar also displays the\n  timestamp pointed by cursor and amount of memory consumed by highlighted item\n  at that moment. Grow ratio of the item being highlited is displayed also; \n  grow ratio is calculated based on time period that is currently shown.\n* Interactive filtering by item name, module or package name (module and\n  package filtering works for `-hc` mode; for all other modes, only name\n  filtering is useful).\n* Interactive filtering by grow rate. It is possible to ask to show, for example,\n  items that grow faster than 15 KiB/s, or slower than 1 MiB/s. Grow ratio is\n  calculated based on time period that is currently shown.\n* Interactive zoom:\n  * Select time interval by dragging mouse with left button held pressed;\n  * Zoom selected part of the chart by clicking \"Zoom In\" button in the bottom\n    right corner;\n  * Return to previous zoom level by clicking \"Zoom Out\" button in the bottom\n    right corner;\n  * Return to original zoom level (to fit the whole chart into the window) by\n    clicking \"Reset Zoom\" button in the bottom right corner.\n* Displaying of \"trace elements\", i.e. items that occupy very small amounts of\n  memory. Such items are merged into one band called `(trace elements)`, as\n  `hp2pretty` does. There are several options for such elements:\n  * To show or not to show trace elements at all\n  * Number of biggest items to show (10 by default)\n  * Two modes of trace elements detection:\n    * either select items that occupy less than N percents of memory in total, or\n    * select items, each of which occupies less than N percents of memory.\n  * Percentage of memory for trace elements is configurable.\n* Legend may be enabled (by default) or disabled in preferences dialog;\n  preferences dialog is called with a button in right bottom corner of the\n  window.\n* Highlighting of the area under mouse cursor may be disabled in preferences dialog.\n* Optional downsampling. Downsampling algorithm is very simple (it just takes\n  each N'ths item) and thus not very precise; but downsampling can make the\n  resulting chart much cleaner and more readable, and also it helps with\n  performance. Number of samples to use is specified in the preferences window.\n  By default, downsampling to 500 samples is used; it means that `hpview` will\n  draw not more than 500 samples along time axis on the screen. You may use\n  interactive zooming on the area of interest if you wish to see more details.\n* It is possible to save currently displayed chart (with current filter, zoom\n  and so on) as PNG or SVG file - see the \"save as\" button in the top right corner\n  of the window, next to \"filter\" button.\n\nOther features may be added later.\n\nPerformance: it takes about 25 seconds to display a `.hp` file of 181 Mb in\nsize on my machine (i5 2.8GHz), from start to displayed chart, without\ndownsampling. With downsampling to 500 samples, it takes about 17 seconds. In\nmy practice, usually smaller files give even more insight into what's going on\nthan bigger ones; so I am not going to invest a lot of time into this matter.\nBut PRs are welcome.\n\nInstallation\n------------\n\nInstall it by stack:\n\n```\n$ sudo apt-get install stack\n$ git clone https://github.com/portnov/hpview.git\n$ cd hpview/\n$ stack install\n```\n\nNote: `hpview` currently depends on master branch of [haskell-chart][2] and on\nmaster branch of [formattable][3] packages; but `stack` will take care of that.\n\n[1]: http://hackage.haskell.org/package/hp2pretty\n[2]: https://github.com/timbod7/haskell-chart\n[3]: https://github.com/portnov/formattable\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fportnov%2Fhpview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fportnov%2Fhpview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fportnov%2Fhpview/lists"}