[{"data":1,"prerenderedAt":427},["ShallowReactive",2],{"navigation_docs":3,"-benchmarks-detection-speed":129,"-benchmarks-detection-speed-surround":422},[4,45,62,88,108],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings",{"title":26,"path":27,"stem":28,"icon":29},"Supported Formats","\u002Fgetting-started\u002Fsupported-formats","1.getting-started\u002F5.supported-formats","i-lucide-file-code",{"title":31,"path":32,"stem":33,"icon":34},"Agent Skill","\u002Fgetting-started\u002Fagent-skill","1.getting-started\u002F6.agent-skill","i-lucide-cpu",{"title":36,"path":37,"stem":38,"icon":39},"Changelog","\u002Fgetting-started\u002Fchangelog","1.getting-started\u002F7.changelog","i-lucide-scroll-text",{"title":41,"path":42,"stem":43,"icon":44},"Migrating from v4 to v5","\u002Fgetting-started\u002Fmigration","1.getting-started\u002F8.migration","i-lucide-arrow-right-left",{"title":46,"path":47,"stem":48,"children":49,"icon":6},"CI & Hooks","\u002Fci-and-hooks","2.ci-and-hooks\u002F1.index",[50,52,57],{"title":46,"path":47,"stem":48,"icon":51},"i-lucide-git-pull-request",{"title":53,"path":54,"stem":55,"icon":56},"Use jscpd in CI","\u002Fci-and-hooks\u002Fci","2.ci-and-hooks\u002F2.ci","i-lucide-github",{"title":58,"path":59,"stem":60,"icon":61},"Use jscpd in Pre-Commit Hook","\u002Fci-and-hooks\u002Fpre-commit","2.ci-and-hooks\u002F3.pre-commit","i-lucide-git-commit",{"title":63,"path":64,"stem":65,"children":66,"icon":68},"Reporters","\u002Freporters","3.reporters\u002F1.index",[67,69,73,78,83],{"title":63,"path":64,"stem":65,"icon":68},"i-lucide-file-chart-column",{"title":70,"path":71,"stem":72,"icon":29},"HTML Reporter","\u002Freporters\u002Fhtml","3.reporters\u002F2.html",{"title":74,"path":75,"stem":76,"icon":77},"JSON Reporter","\u002Freporters\u002Fjson","3.reporters\u002F3.json","i-lucide-braces",{"title":79,"path":80,"stem":81,"icon":82},"Badge Reporter","\u002Freporters\u002Fbadge","3.reporters\u002F4.badge","i-lucide-award",{"title":84,"path":85,"stem":86,"icon":87},"SARIF Reporter","\u002Freporters\u002Fsarif","3.reporters\u002F5.sarif","i-lucide-shield-check",{"title":89,"icon":6,"path":90,"stem":91,"children":92,"page":6},"Benchmarks","\u002Fbenchmarks","4.benchmarks",[93,98,103],{"title":94,"path":95,"stem":96,"icon":97},"Detection Speed","\u002Fbenchmarks\u002Fdetection-speed","4.benchmarks\u002F1.detection-speed","i-lucide-zap",{"title":99,"path":100,"stem":101,"icon":102},"Multi-Format Detection","\u002Fbenchmarks\u002Fcross-format","4.benchmarks\u002F2.cross-format","i-lucide-layers",{"title":104,"path":105,"stem":106,"icon":107},"AI Token Efficiency","\u002Fbenchmarks\u002Fai-token-efficiency","4.benchmarks\u002F3.ai-token-efficiency","i-lucide-sparkles",{"title":109,"path":110,"stem":111,"children":112,"icon":114},"API","\u002Fapi","5.api\u002F1.index",[113,115,120,125],{"title":109,"path":110,"stem":111,"icon":114},"i-lucide-code",{"title":116,"path":117,"stem":118,"icon":119},"Rust Crates (v5)","\u002Fapi\u002Fcore","5.api\u002F2.core","i-lucide-box",{"title":121,"path":122,"stem":123,"icon":124},"Server API","\u002Fapi\u002Fserver","5.api\u002F3.server","i-lucide-server",{"title":126,"path":127,"stem":128,"icon":119},"MCP Server","\u002Fapi\u002Fmcp-server","5.api\u002F4.mcp-server",{"id":130,"title":94,"body":131,"description":413,"extension":414,"links":415,"meta":416,"navigation":417,"path":95,"seo":418,"stem":96,"__hash__":421},"docs\u002F4.benchmarks\u002F1.detection-speed.md",{"type":132,"value":133,"toc":406},"minimark",[134,138],[135,136,94],"h2",{"id":137},"detection-speed",[139,140,141,150,157,161,309,312,338,342,395],"benchmark-speed",{},[142,143,144,145,149],"p",{},"The chart uses a ",[146,147,148],"strong",{},"logarithmic scale"," — each major gridline represents a 10× increase in time. This makes the 428× range between jscpd@5 (84ms) and PMD CPD (35,980ms) visually comparable while preserving differences between the faster tools.",[142,151,152,153,156],{},"jscpd@5's Rust engine makes it ",[146,154,155],{},"32× faster"," than jscpd@4 (its TypeScript predecessor) and the only tool completing in under 100ms. The next fastest tool, jscpd-rs, takes 33% longer.",[135,158,160],{"id":159},"detection-accuracy","Detection Accuracy",[162,163,164,186],"table",{},[165,166,167],"thead",{},[168,169,170,174,177,180,183],"tr",{},[171,172,173],"th",{},"Tool",[171,175,176],{},"Time",[171,178,179],{},"Files",[171,181,182],{},"Clones",[171,184,185],{},"Dup Lines",[187,188,189,207,224,241,258,275,292],"tbody",{},[168,190,191,195,198,201,204],{},[192,193,194],"td",{},"jscpd@5",[192,196,197],{},"84ms",[192,199,200],{},"347",[192,202,203],{},"212",[192,205,206],{},"9,133",[168,208,209,212,215,218,221],{},[192,210,211],{},"jscpd-rs",[192,213,214],{},"111ms",[192,216,217],{},"360",[192,219,220],{},"222",[192,222,223],{},"10,317",[168,225,226,229,232,235,238],{},[192,227,228],{},"Duplo",[192,230,231],{},"162ms",[192,233,234],{},"319",[192,236,237],{},"518",[192,239,240],{},"13,049",[168,242,243,246,249,252,255],{},[192,244,245],{},"Fallow dupes",[192,247,248],{},"164ms",[192,250,251],{},"34",[192,253,254],{},"10",[192,256,257],{},"3,137",[168,259,260,263,266,269,272],{},[192,261,262],{},"Simian",[192,264,265],{},"964ms",[192,267,268],{},"547",[192,270,271],{},"424",[192,273,274],{},"15,351",[168,276,277,280,283,286,289],{},[192,278,279],{},"jscpd@4",[192,281,282],{},"2.680s",[192,284,285],{},"364",[192,287,288],{},"211",[192,290,291],{},"9,969",[168,293,294,297,300,303,306],{},[192,295,296],{},"PMD CPD",[192,298,299],{},"35.980s",[192,301,302],{},"71",[192,304,305],{},"56",[192,307,308],{},"2,267",[142,310,311],{},"Detection accuracy varies significantly:",[313,314,315,322,328,333],"ul",{},[316,317,318,321],"li",{},[146,319,320],{},"jscpd@5 and jscpd@4"," report nearly identical clone counts (212 vs 211), confirming the Rust rewrite preserves detection quality.",[316,323,324,327],{},[146,325,326],{},"Duplo and Simian"," report the most duplicates but include significant false positives — both are purely text-based without tokenization.",[316,329,330,332],{},[146,331,296],{}," finds the fewest clones (56) despite running for 36 seconds — it only supports 34 languages and cannot process most fixture formats.",[316,334,335,337],{},[146,336,245],{}," only analyzes TypeScript\u002FJavaScript files (34 of 547), making it unsuitable for polyglot codebases.",[135,339,341],{"id":340},"methodology","Methodology",[313,343,344,355,361,371,377,383,389],{},[316,345,346,349,350,354],{},[146,347,348],{},"Target:"," ",[351,352,353],"code",{},"fixtures\u002F"," directory — 547 files, 21,645 lines across 150+ language formats",[316,356,357,360],{},[146,358,359],{},"Threshold:"," Default detection threshold (~5 lines \u002F ~50 tokens) for all tools",[316,362,363,366,367,370],{},[146,364,365],{},"Timing:"," External wall-clock measurement (",[351,368,369],{},"date +%s%N","), reported in milliseconds",[316,372,373,376],{},[146,374,375],{},"PMD CPD:"," Run for all 34 supported languages; results summed",[316,378,379,382],{},[146,380,381],{},"Fallow:"," Run from inside the target directory (no path argument support)",[316,384,385,388],{},[146,386,387],{},"Hardware:"," Apple Silicon (Darwin arm64)",[316,390,391,394],{},[146,392,393],{},"Last updated:"," June 2025",[142,396,397,398,405],{},"Full methodology details and reproducible commands are in the ",[399,400,404],"a",{"href":401,"rel":402},"https:\u002F\u002Fgithub.com\u002Fkucherenko\u002Fjscpd\u002Fblob\u002Fmaster\u002Fbenchmark\u002FBENCHMARK.md",[403],"nofollow","jscpd repository",".",{"title":407,"searchDepth":408,"depth":408,"links":409},"",2,[410,411,412],{"id":137,"depth":408,"text":94},{"id":159,"depth":408,"text":160},{"id":340,"depth":408,"text":341},"Benchmark comparison of jscpd@5 vs 6 other CPD tools — speed and detection accuracy.","md",null,{},{"icon":97},{"title":419,"description":420},"Detection Speed Benchmarks — jscpd","jscpd@5 completes in 84ms — 32× faster than v4, 428× faster than PMD CPD. Full benchmark comparison of 7 CPD tools.","U1oiMalKlZ5HP3D1CykoJhKiFkuPwguQt-rMh6WOk4w",[423,425],{"title":84,"path":85,"stem":86,"description":424,"icon":87,"children":-1},"Generate SARIF reports for GitHub Code Scanning integration.",{"title":99,"path":100,"stem":101,"description":426,"icon":102,"children":-1},"How jscpd detects duplicates across Svelte, Astro, Vue, and Markdown formats — vs other tools.",1782123774282]