{"id":2882,"date":"2026-07-09T11:14:34","date_gmt":"2026-07-09T11:14:34","guid":{"rendered":"https:\/\/justfineinfotech.com\/benchmarking-coding-agents-on-databricks-multi-million-line-codebase\/"},"modified":"2026-07-09T11:14:48","modified_gmt":"2026-07-09T11:14:48","slug":"benchmarking-coding-agents-on-databricks-multi-million-line-codebase","status":"publish","type":"post","link":"https:\/\/justfineinfotech.com\/fr\/benchmarking-coding-agents-on-databricks-multi-million-line-codebase\/","title":{"rendered":"Benchmarking Coding Agents on Databricks\u2019 Multi-Million Line Codebase"},"content":{"rendered":"<p>At Databricks, the way we build software is changing quickly as we aggressively adopt AI for engineering. The landscape of models and harnesses for code authoring has rapidly expanded in the last year, giving developers more choices than ever. With more options, it has become increasingly important to understand which coding agents offer the best performance on real-world coding tasks as well as understanding how task-performance varies with price.<\/p>\n<p>This article shares the results and methodology of the internal coding benchmark we built at Databricks, which evaluates tools on actual coding tasks our engineers performed on the Databricks codebase. Tasks featured edits against a multi-million line codebase covering many popular languages (Python, Go, Typescript, Scala, etc.) and both tasks and solutions were carefully reviewed to ensure accuracy. This isn&#8217;t meant to be comprehensive, but the exercise surfaced insights that have already made our engineering team meaningfully more efficient with coding agents. Below, you can see how models and harnesses scored on the overall benchmark:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/pareto.png\" alt=\"Cost vs. Performance on our benchmark\">    <\/p>\n<p><strong>Figure 1: Cost vs. Performance on our benchmark<\/strong><\/p>\n<p>The main conclusions from our analysis were:<\/p>\n<ol>\n<li>The Pareto frontier for coding tasks (i.e. best quality for a given cost) includes models from OpenAI, Anthropic,\u00a0<strong>and<\/strong>open source. This means today, only a mix of tools can provide frontier performance.<\/li>\n<li>Open models, and GLM 5.2 in particular, are now able to handle even the highest level of task difficulty.<\/li>\n<li>The token price of a model is a poor indicator of actual costs incurred on end-to-end tasks. Larger models can be far more token efficient and have lower overall costs.<\/li>\n<li>The harness a model is called from dramatically impacts cost and quality. In many cases, simple harnesses like Pi performed best on our workloads.<\/li>\n<\/ol>\n<p>Let\u2019s dive a bit deeper on each one<\/p>\n<h3>Models cluster into rough \u201ccapability tiers\u201d<\/h3>\n<p>Specific results being a couple points off can often even out in real world tasks. We focused more on the thematic patterns that help us reason about which models to use for various tasks. In fact, the results showed clear clustering of the models and harnesses into 3 capability tiers<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/clustering-3.png\" alt=\"Capabilities tiers for models\">    <\/p>\n<p><strong>Figure 2: Three distinct capability tiers emerged in our overall results, with nuance in which models were effective in each group<\/strong><\/p>\n<p>At the upper end of performance, we see that the most intelligent models are very effective at solving all kinds of problems, but they\u2019re very expensive. Medium and lower intelligence models are still highly effective at the common tasks, and in many cases, they\u2019re also significantly cheaper.\u00a0<\/p>\n<p>Day to day, engineers do a lot of different things that vary significantly in complexity: common operational tasks like flipping a flag or updating configs don\u2019t require extremely intelligent models, but deeper design explorations do. However, in the past, our default models were always the\u00a0<em>most\u00a0<\/em>expensive ones. Based on this analysis we determined we should push more work to the Haiku and GPT 5.4 Mini class of models.<\/p>\n<h3>Open models are here for coding<\/h3>\n<p>There\u2019s been a lot of excitement about GLM 5.2, and our results showed evidence that GLM can be a daily driver model for a lot of our developers. It landed in the top capability tier, statistically tied with Opus 4.8 on quality, but costing $1.28\/task against Opus\u2019s $1.94<\/p>\n<p>The GLM quality scores are consistent with qualitative feedback we\u2019ve gotten from internal developers who have been piloting GLM for daily development. Because of its great performance for everyday coding tasks, we\u2019ve been focused on\u00a0<a href=\"https:\/\/x.com\/Yuchenj_UW\/status\/2070166719839326396\" rel=\"nofollow noopener\" target=\"_blank\">serving GLM with the best performance<\/a>, and the evidence shows it\u2019s time to start deploying these as daily drivers for coding.\u00a0<\/p>\n<h3>Price-per-task vs price-per-token<\/h3>\n<p>Developers often eyeball token costs to determine how expensive a model will be when completing coding tasks. We found, however, that token costs are often a poor indicator of overall task costs, due to variance in reasoning efficiency amongst models. This underscores the need for task-level benchmarking, since task shape and complexity may be different in different contexts<\/p>\n<p>As an example, Sonnet 5 is ~1.7x cheaper per token than Opus 4.8, but, on our tasks, we found that Sonnet cost $2.09\/task vs Opus\u2019s $1.94, while scoring six points lower on task completion (81% vs 87%). This was mostly because Sonnet 5 worked longer and read more to get there, consuming 1.9x more tokens.\u00a0<\/p>\n<h3>Harnesses have a major impact on efficiency<\/h3>\n<p>When we ran the same model with the same thinking effort through two different harnesses (Claude Code\/Codex vs Pi), we observed that the cost per task differed significantly (more than 2x in some cases), while quality remained the same. The main difference came down to how much context each harness fed the model on each turn<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/dumbell-scaled.png\" alt=\"Harness impact on efficiency\">    <\/p>\n<p>Pi sent about 3x less context per turn. It managed context better, keeping a tighter working set and finishing the tasks in fewer runs.<img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/cost-1.png\" alt=\"Total context re-fed to the model per task\"><\/p>\n<p>The lesson here isn\u2019t that one harness is always cheaper or that native harnesses are worse. Instead, model choice is only one piece of the puzzle. Establishing this flexibility is why we invested in\u00a0<a href=\"https:\/\/omnigent.ai\/\" rel=\"nofollow noopener\" target=\"_blank\">Omnigent<\/a>to make mode-and-harness swaps seamless.\u00a0<\/p>\n<h2>Why build your own benchmark?<\/h2>\n<p>Public benchmarks like SWE-Bench and TerminalBench are useful, but they can\u2019t answer the questions we had. There are a few reasons for this:<\/p>\n<ul>\n<li>The tasks are public, so the solutions leak into training data over time.<\/li>\n<li>We found the results weren\u2019t representative for our codebase, which spans 10+ languages and many services written in Scala, Go, Rust, Java and Python, Bazel, Protobuf, and more.<\/li>\n<\/ul>\n<h2>How we built the benchmark<\/h2>\n<p>We usedUnity AI Gatewayto capture logs of all our coding interactions, which enabled us to analyze the complexity of the tasks engineers tackle using coding agents. There was a significant diversity in the task complexity, and about a quarter were tagged as low-complexity work and ~60% as medium complexity<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/image10_8.png\" alt=\"What our engineers actually ask of coding agents\">    <\/p>\n<p>However, expensive models are the default models engineers use, so there was clearly a huge opportunity for improving efficiency<\/p>\n<h3>Task Construction<\/h3>\n<p>Our engineers merge thousands of code changes a day, so we already have a great dataset to build off. A good pull request is a rich artifact, with commits that show iteration from the developer, review by humans, and tests that help verify a code change is faithful to its intent. However, we needed several quality checks and filters to construct a high-quality benchmark out of them:<\/p>\n<ul>\n<li><strong>Recency:\u00a0<\/strong>We pull from recent history so the tasks reflect how we build today, including the frameworks, patterns, and conventions currently in use.<\/li>\n<li><strong>Human written:\u00a0<\/strong>Bot commits, service accounts, fully AI generated changes, and auto-generated changes were filtered.\u00a0<\/li>\n<li><strong>Associated high quality test suite:\u00a0<\/strong>We filtered for PRs that included high-quality tests for validating the code changes.<\/li>\n<li><strong>Self-contained:\u00a0<\/strong>The changes were confined to a few modules.\u00a0<\/li>\n<li><strong>Representative of typical tasks:\u00a0<\/strong>We selected PRs from a distribution of tasks across the full stack: Scala backend services, Rust systems code, the React and TypeScript frontend, protobuf and gRPC contracts, and Bazel configs.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/databricks-bench.png\" alt=\"Task construction step-by-step plan\">    <\/p>\n<p>Once we had candidate PRs, we focused on constructing well-specified tasks by:<\/p>\n<ol>\n<li><strong>Gleaning the intent and summarizing it as a prompt.<\/strong>We read the PR to understand what it was actually for and then describe the outcome we want. Usually, that meant rewriting the PR description by stating the problem or goal, naming any constraints, and removing the description of the solution. It\u2019s important to remove, for example, explanations of\u00a0<em>why\u00a0<\/em>a bug fix is the right one, since that makes the task too easy.<\/li>\n<li><strong>Splitting out the relevant tests.<\/strong>The non-test files were the change the model has to reproduce on its own, so we set the test files aside and ensured we could compile that. Our build system can already determine which tests depend on the files that were touched in the original PR, so we ran all those test targets in full.<\/li>\n<\/ol>\n<p>What came out of this exercise was a single task in the benchmark. Here\u2019s a simplified example:<\/p>\n<p>While we used scripting and AI to generate candidate tasks, we evaluated\u00a0each sample\u00a0by hand. In some cases, we found that tests in the original PR needed to be rewritten to allow for an alternative implementation or to be more rigorous, which we did manually (without AI). Similarly, we also found cases that required improving the task description to make them well-specified<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/image6_37.png\" alt=\"Before and after from the test suite\">    <\/p>\n<p>Figure 3: A before-and-after from our test suite: the previous test anchored on verifying exact string match which resulted in some failures when the model tried to solve the task. This wasn\u2019t a great way to test non-deterministic output so it was rewritten to grade behavior instead<\/p>\n<p>We instantiated the coding agent harnesses and models using their standard, out of the box setups, with all common tools that Databricks engineers would have available to them<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/image1_112.png\" alt=\"Set-up and review process\">    <\/p>\n<p>When the agent explicitly said that it had completed the task, we checkpointed that code, patched the tests that were held out, and evaluated the tests to determine whether that task is a \u201cpass\u201d for that model + harness combination. We did\u00a0not\u00a0use an LLM judge to evaluate correctness, since we\u2019ve found that this rewards sounding right over being right<\/p>\n<h3>Additional Guardrails<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/justfineinfotech.com\/wp-content\/uploads\/2026\/07\/image11_6.png\" alt=\"Additional guardrails\">    <\/p>\n<p>In our early experiments, a few model scores looked too good to be true, so we manually inspected the traces to understand what happened in these agent trajectories. What we saw was that due to our original setup, the \u201ccorrect\u201d implementation was still recoverable in the Git history of the worktree! Every task had originated from a merged commit, so nothing stopped an agent with a shell from walking forward through git history to find it. To fix this issue, we sealed git history: for the length of each run, we cut the working copy off from the repository entirely.<\/p>\n<h2>What\u2019s next?<\/h2>\n<p>We started with a simple question: can we use coding agents more efficiently? The answer is a definitive yes, and because we can be data driven, we can start building capabilities to select the right models automatically and track efficiency<\/p>\n<p>Any company can do the same. Any team with a backlog of merged PRs is sitting on a benchmark already that no model has trained on, graded by the tests your team wrote. We\u2019re actively adding more tasks (especially harder ones), and we plan to run every new agent\/harness through it and feel more confident about our choices<\/p>\n<p>At Databricks, we\u2019ve always been wary of lock-in, not just to vendors, but to assumptions that make teams less flexible over time. That same instinct shaped our\u00a0early bets on open formats and standards, and it shapes how we\u2019re approaching AI now: measure what actually works on the code we ship, give engineers room to\u00a0move across modelsand\u00a0harnesseswith consistent guardrails, and do optimizations to use AI effectively.<\/p>\n<p>In a follow-up blog, we\u2019ll talk more about how we\u2019re using intelligent routing <a href=\"https:\/\/justfineinfotech.com\/fr\/top-woocommerce-alternatives-key-features-and-pricing\/\" title=\"Top WooCommerce alternatives: Key features and pricing\">features<\/a> in\u00a0Unity AI Gatewayand in\u00a0Omnigentto help our developers use the most intelligent agents while being efficient<\/p>\n<h3>Get the latest posts in your inbox<\/h3>\n<p>Subscribe to our blog and get the latest posts delivered to your inbox<\/p>\n<h2>Sign up<\/h2>\n<p>View all blogs<\/p>\n<div style=\"clear:both;margin:30px 0 15px 0\">\n<p>\n    <strong>Related:<\/strong><br \/>\n    &lt;a href=&quot;https:\/\/yoursite.com\/<a href=\"https:\/\/justfineinfotech.com\/fr\/workflow-automation-market-size-to-hit-64-88-billion-by-2035-sns-insider\/\" title=\"Workflow Automation Market Size to Hit $64.88 Billion by 2035 | SNS Insider\">automation<\/a>-training-benin\/&#8221; title=&#8221;Digital Automation Training Benin: 5 Winning Skills Employers Demand in 2026&#8243;&gt;<br \/>\n      Digital Automation Training Benin: 5 Winning Skills Employers Demand in 2026<br \/>\n    <\/a>\n  <\/p>\n<p>\n    &lt;a href=&quot;https:\/\/yoursite.com\/automation-africa\/&quot; title=&quot;<a href=\"https:\/\/justfineinfotech.com\/fr\/10-best-whatsapp-marketing-software-to-send-bulk-messages-2026\/\" title=\"10 Best WhatsApp Marketing Software to Send Bulk Messages (2026)\">WhatsApp Marketing<\/a> Automation Africa: 6 Dangerous Mistakes Brands Make in Nigeria&#8221;&gt;<br \/>\n      WhatsApp Marketing Automation Africa: 6 Dangerous Mistakes Brands Make in Nigeria<br \/>\n    <\/a>\n  <\/p>\n<\/div>\n<div style=\"clear:both;margin:30px 0;padding:25px;background:#f8f9fc;border:1px solid #ddd;border-radius:8px;text-align:center\">\n<h3>Want to learn this practically?<\/h3>\n<p>Join <strong>Justfine Infotech<\/strong> and build real digital skills in AI, automation, web development, digital marketing, office productivity, e-commerce, freelancing and cybersecurity.<\/p>\n<p><strong>Available Programmes:<\/strong><br \/>\n  6 Weeks Certificate \u2022 3 Months Professional Certificate \u2022 6 Months Diploma \u2022 Full Professional Diploma<\/p>\n<p><strong>WhatsApp:<\/strong><br \/>\n  +229 01 57 57 99 15<br \/>\n  +229 01 66 68 11 60<\/p>\n<p><a href=\"https:\/\/api.whatsapp.com\/send?phone=2348132690270&amp;text=Hello\" target=\"_blank\" rel=\"noopener\">Enroll Now<\/a><\/p>\n<\/div>\n<p class=\"ani-source\">Source: <a href=\"https:\/\/www.databricks.com\/blog\/benchmarking-coding-agents-databricks-multi-million-line-codebase\" target=\"_blank\" rel=\"nofollow noopener\">www.databricks.com<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>At Databricks, the way we build software is changing quickly as we aggressively adopt AI for engineering. The landscape of models and harnesses for code authoring has rapidly expanded in the last year, giving developers more choices than ever. With more options, it has become increasingly important to understand which coding agents offer the best&hellip;<\/p>","protected":false},"author":1,"featured_media":2893,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[66],"tags":[217,346,168,347,348],"class_list":["post-2882","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-skills-career-opportunities","tag-agents","tag-benchmarking","tag-coding","tag-databricks","tag-multimillion"],"_links":{"self":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts\/2882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/comments?post=2882"}],"version-history":[{"count":1,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts\/2882\/revisions"}],"predecessor-version":[{"id":2892,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/posts\/2882\/revisions\/2892"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/media\/2893"}],"wp:attachment":[{"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/media?parent=2882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/categories?post=2882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justfineinfotech.com\/fr\/wp-json\/wp\/v2\/tags?post=2882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}