HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
plasma-umass
coz
C2014–2026
plasma-umass / coz

coz

Coz: Causal Profiling

24Distinct people
26Mentions
1Explicit recommenders
4.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Coz: Causal Profiling

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I haven't had a chance to mess around with it much, but the coz-profiler [1] uses basically the same idea, but the other way around (i.e., slow down everything else to get a…

jaybosamiya used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year26 dated mentions

Observed mentions: 2014-12-10 14:14:20 UTC to 2026-10-07 09:36:40 UTC.

0123452014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 3 mentions; 2 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC110
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC202
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC110
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC422
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC514
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC220
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC321
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC220

What Hacker News says

26 sources
One of my previous struggles has been profilers blaming whatever code is the first bit of code to force some memory into cache. We devs could take turns and claim to have improved our own code by a huge margin simply by rearranging the order of calls so ours was not first. Then pass the baton; global performance utterly unchanged, everyone gets to "optimize" their own code. Something like https://github.com/plasma-umass/coz might be the way forward. https://www.youtube.com/watch?v=r-TLSBdHe1A
In Can we know whether a profiler is accurate?
from the youtube description: "Large language models are achieving state-of-the-art results across a wide variety of domains, eclipsing past work in well-studied areas like auto-completion. I argue that they also presage a "Cambrian explosion"—a wave of radically new AI-powered software development tools that will make all our lives easier. I propose a paradigm for how we can best rethink existing tools to leverage a combination of LLMs and PL technologies like static and dynamic analysis. This approach promises to evolve our software tools far beyond their current capacities, including profilers that suggest optimizations, debuggers that identify and propose fixes using real-world knowledge, coverage analyzers that synthesize new tests, compilers that propose fixes for compile-time errors, and data analysis frameworks that analyze your d
Read the rest
ata." Some links from the presentation - https://github.com/plasma-umass#plasma-projects - https://github.com/stephenfreund/flowco Plasma - projects: - RightTyper: Automatically annotates your Python code with high-quality types - https://github.com/righttyper/righttyper - Scalene: A state-of-the-art CPU+GPU+memory profiler for Python, with AI-powered optimization suggestions GitHub stars - https://github.com/plasma-umass/scalene - Coz: A causal profiler that tells you where to optimize your code (C/C++/Rust/Swift/Java) - https://github.com/plasma-umass/coz - CSrankings: Ranks the world's CS departments - https://csrankings.org/ - CoverUp: Automatically generates high-coverage tests - https://github.com/plasma-umass/coverup - Slipcover: Nearly zero-overhead code coverage analysis for Python - https://github.com/plasma-umass/slipcover - ChatDBG: AI-assisted debugging in lldb, gdb, and pdb. Uses AI to answer 'why' - https://github.com/plasma-umass/ChatDBG - CWhy: ("See why") Explains and suggests fixes for C/C++/Rust compiler error messages. - https://github.com/plasma-umass/CWhy - Commentator: Automatically comments Python code, adding docstrings and type annotations - https://github.com/plasma-umass/commentator - SQLwrite: SQLite3 with natural language to SQL, recommends indexes to optimize queries - https://github.com/plasma-umass/sqlwrite
In ATC/OSDI '25 Joint Keynote: Accelerating Software Dev: The LLM (R)Evolution [video]
Nobody should do benchmarking like this anymore. Memory layout of your code has such a big impact on performance on modern computers that measuring performance without removing that variable leads to wild goose chases, where you think you improved something, but in reality you incidentally got the compiler to move the code around a bit. Emery Berger has an excelent talk on this [1], and a causal profiler that they developed called Coz[2]. Branch miss-predicts might be somewhat invariant to that, but still, one of the main points of the talk is that people do too much eyeball statistics, mistaking the variance of the underlying stochastic process with actual signal. Coz is pretty trivial to set up with Zig too. 1. https://m.youtube.com/watch?v=r-TLSBdHe1A 2. https://github.com/plasma-umass/coz
In Poop: Performance Optimizer Observation Platform
"benchmarks always tell you if there's a problem and exactly where it is, and squash any unneeded discussion." Unfortunately, always is too strong of a word. Cache eviction in one parts can cause memory stalls on another part, indirection in the caller can prevent speculation. Type erasure can prevent inlining resulting in the called function being blamed for problem in the caller. Your problem might not even be CPU, if it's contention related, or timing related, overloaded queues, not pushing back at the right places, io bound, the bottleneck is work which is queued and executed elsewhere... Causal profiling is a technique which is relevant specifically because profiling can miss the forest for the trees: https://github.com/plasma-umass/coz It's really easy to write a benchmark which measures a different scenario from what your applicati
Read the rest
on is doing. A classic example might be benchmarking a hashmap in a loop when that hashmap is usually used when cold. I definitely agree about directing efforts to where you can make an impact and guiding that through measurement, but benchmarks can miss that there's a problem and blame the wrong part of the application. If the difference is large enough, ms vs hours, you'd have to really screw up methodology to get the wrong result (I've done it almost that badly before).
In (Risp (In (Rust) (Lisp)))

Showing the 15 most recent of 26 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.