{"id":17004847,"url":"https://github.com/clickermonkey/theprof","last_synced_at":"2025-07-17T09:38:16.671Z","repository":{"id":9769312,"uuid":"11739222","full_name":"ClickerMonkey/TheProf","owner":"ClickerMonkey","description":"A simple Java Profiler that outputs the performance of your application into CSV files.","archived":false,"fork":false,"pushed_at":"2013-08-03T05:15:10.000Z","size":716,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-27T10:23:12.141Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"osl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ClickerMonkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-29T12:37:08.000Z","updated_at":"2013-12-22T20:34:09.000Z","dependencies_parsed_at":"2022-08-25T21:10:42.989Z","dependency_job_id":null,"html_url":"https://github.com/ClickerMonkey/TheProf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTheProf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTheProf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTheProf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTheProf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClickerMonkey","download_url":"https://codeload.github.com/ClickerMonkey/TheProf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244945597,"owners_count":20536295,"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-14T04:44:36.452Z","updated_at":"2025-03-22T10:39:18.453Z","avatar_url":"https://github.com/ClickerMonkey.png","language":"Java","readme":"TheProf\n=======\n\n![Stable](http://i4.photobucket.com/albums/y123/Freaklotr4/stage_stable.png)\n\nA simple Java Profiler that outputs the performance of your application into CSV files.\n\n### Download\n\n* [Latest Version](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/TheProf/raw/master/build/theprof.jar)\n\n### How does it work?\n\nIn a configuration file, you specify the classes/packages/methods to include/exclude from profiling. When a class is first loaded\nand the class is marked as profilable, byte code will be injected in the methods of the class.\n\n### What does it measure per method?\n\n1. Number of invocations\n2. The total execution time of the method (via average, variance, min, max, and importance)\n3. The method execution time - this is the total time in the method MINUS the time of any method calls made that are also being profiled. This helps figure out whether a method is slow or whether it's fine, and the method's it calls are the problem.  (via average, variance, min, max, and importance)\n\n### How is variance calculated?\n\nIt's not true variance, it's the average of the difference between the min, max, and average.\n\n### How is importance calculated and why is it important?\n\nImportance is \"# of invocations\" * \"average time\", this helps you determine which methods should be improved.\n\n### What is delay?\n\nBecause the JVM will wait until a method is executed X number of times before it tries to improve it's execution speed (with JIT), you can set an invocation delay to avoid tracking statistics for the first X method invocations.\n\n### What's the format of the configuration file?\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003ctheprof\u003e\n  \u003cproperties\u003e\n    \u003cproperty name=\"mode\" value=\"CSV\" /\u003e \u003c!-- GUI, CONSOLE --\u003e\n  \u003c/properties\u003e\n   \t\n  \u003cinclusion-filters\u003e\n    \u003cinclusion pattern=\"org.magnos.entity.Entity\" /\u003e \u003c!-- include class to include methods --\u003e\n    \u003cinclusion pattern=\"org.magnos.entity.Entity#get(Component)\" delay=\"100000\" /\u003e \u003c!-- set delay --\u003e\n    \u003cinclusion pattern=\"org.magnos.entity.Entity#set(Component,Object)\" delay=\"9000\" /\u003e\n  \u003c/inclusion-filters\u003e\n  \t\n  \u003cexclusion-filters\u003e\n    \u003cexclusion pattern=\"org.magnos.entity.EntityCore\" /\u003e \u003c!-- is included based on first pattern, but we want' to ignore it --\u003e\n    \u003cexclusion pattern=\"org.magnos.entity.EntityUtility\" /\u003e\n  \u003c/exclusion-filters\u003e\n\u003c/theprof\u003e\n```\n\n### How do I use this?\n\nYou add the following VM arguments:\n\u003e -javaagent:theprof.jar=theprof.xml\n\nWhere theprof.jar is the location of a TheProf build, and theprof.xml is the location of the XML configuration file.\n\n### Where do the profiling statistics go?\n\nIn the CWD directory of the application, a stats directory will be created which contains a CSV file for each profiled class and a CSV file that has all statistics.\n\n### TODO\n\n* Add a live statistics viewing option\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclickermonkey%2Ftheprof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclickermonkey%2Ftheprof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclickermonkey%2Ftheprof/lists"}