{"id":32957906,"url":"https://github.com/LatencyUtils/LatencyUtils","last_synced_at":"2025-11-13T07:01:15.533Z","repository":{"id":85955373,"uuid":"13363907","full_name":"LatencyUtils/LatencyUtils","owner":"LatencyUtils","description":"Utilities for latency measurement and reporting","archived":false,"fork":false,"pushed_at":"2024-05-05T10:53:20.000Z","size":693,"stargazers_count":464,"open_issues_count":5,"forks_count":60,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-11-03T17:10:38.535Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://LatencyUtils.github.io/LatencyUtils/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LatencyUtils.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-10-06T15:06:02.000Z","updated_at":"2025-10-30T01:28:52.000Z","dependencies_parsed_at":"2023-03-07T21:45:45.880Z","dependency_job_id":null,"html_url":"https://github.com/LatencyUtils/LatencyUtils","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/LatencyUtils/LatencyUtils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LatencyUtils%2FLatencyUtils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LatencyUtils%2FLatencyUtils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LatencyUtils%2FLatencyUtils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LatencyUtils%2FLatencyUtils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LatencyUtils","download_url":"https://codeload.github.com/LatencyUtils/LatencyUtils/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LatencyUtils%2FLatencyUtils/sbom","scorecard":{"id":82406,"data":{"date":"2025-08-11","repo":{"name":"github.com/LatencyUtils/LatencyUtils","commit":"dad76acd05c6dbcf477cdc2cda2817b4f9bb2d89"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 5/24 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 11 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T06:11:37.754Z","repository_id":85955373,"created_at":"2025-08-15T06:11:37.754Z","updated_at":"2025-08-15T06:11:37.754Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283929675,"owners_count":26918166,"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","status":"online","status_checked_at":"2025-11-11T02:00:06.610Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-11-12T23:00:33.572Z","updated_at":"2025-11-13T07:01:15.527Z","avatar_url":"https://github.com/LatencyUtils.png","language":"Java","readme":"\u003ca href=\"https://foojay.io/works-with-openjdk\"\u003e\u003cimg align=\"right\" src=\"https://github.com/foojayio/badges/raw/main/works_with_openjdk/Works-with-OpenJDK.png\" width=\"100\"\u003e\u003c/a\u003e\n\nLatencyUtils\n============\n\nA latency stats tracking package\n\nThe LatencyUtils package includes useful utilities for tracking latencies. Especially\nin common in-process recording scenarios, which can exhibit significant coordinated\nomission sensitivity without proper handling. LatencyStats instances are used to\ntrack recorded latencies in the common use case the often follow this pattern:\n\n```Java\n LatencyStats myOpStats = new LatencyStats();\n ...\n\n // During normal operation, record all operation latencies into a LatencyStats instance:\n\n long startTime = System.nanoTime();\n // Perform operation:\n doMyOperation(...);\n // Record operation latency:\n myOpStats.recordLatency(System.nanoTime() - startTime);\n ...\n\n // Later, report on stats collected:\n Histogram intervalHistogram = myOpStats.getIntervalHistogram();\n\n intervalHistogram.outputPercentileDistribution(System.out, 1000000.0);\n```\n\nThe problem\n-------------\n\nLatency tracking of in-process operations usually consists simple time sampling around\na tracked operation. E.g. a database read operation for which latency statistics are\nbeing developed may be surrounded by time measurement operation immediately before and\nafter the operation is performed, with the difference in time recorded in some aggregate\nstatistics gathering form (average, std. deviation, histogram,. etc.) which is later\nused to report on the experienced latency behavior of the tracked operation.\n\nThe problem with this extremely common form of latency behavior tracking is that\nwhenever pauses occur in the system, latency statistics become significantly skewed\ntoward falsely-optimistic values. This occurs in two key ways:\n- When a pause occurs during a tracked operation, a single long recorded latency\n  will appear in the recorded values, with no long latencies associated with any\n  pending requests that may be stalled by the pause.\u003c/li\u003e\n- When a pause occurs outside of the tracked operation (and outside of the tracked\n  time window) no long latency value would be recorded, even though any requested\n  operation would be stalled by the pause.\u003c/li\u003e\n\nThe Solution\n-------------\n\nThe LatencyStats class is designed for simple, drop-in use as a latency behavior\nrecording object in common in-process latency recording and tracking situations.\nLatencyStats includes under-the-hood tracking and correction of pause effects,\ncompensating for coordinated omission. It does so by using pluggable pause detectors\nand interval estimators that together with LatencyStats will transparently produce\ncorrected histogram values for the recorded latency behavior.\n","funding_links":[],"categories":["Projects","项目","V. Tools for developing","Performance analysis"],"sub_categories":["Performance analysis","性能分析","3. Perfomance tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLatencyUtils%2FLatencyUtils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLatencyUtils%2FLatencyUtils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLatencyUtils%2FLatencyUtils/lists"}