{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/profiling-tools",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Language\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Equivalent Tools (XHProf-like: hierarchical/function-level profilers)\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"PHP\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"XHProf, Tideways, Blackfire \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://inviqa.com/blog/profiling-xhprof\"\n  }, \"inviqa+1\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Python\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"cProfile (built-in), Pyinstrument, Scalene \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://www.devopsschool.com/blog/code-profiling-tools-in-2024/\"\n  }, \"devopsschool+1\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Java\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"YourKit, VisualVM, JProfiler \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://www.devopsschool.com/blog/code-profiling-tools-in-2024/\"\n  }, \"devopsschool+1\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"C/C++\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"gprof, Valgrind (Callgrind), perf \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://www.devopsschool.com/blog/code-profiling-tools-in-2024/\"\n  }, \"devopsschool+2\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"JavaScript/Node.js\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Clinic.js, 0x, Node --prof \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://www.secoda.co/glossary/profiling-tools\"\n  }, \"secoda\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Go\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"pprof (built-in), Pyroscope \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://uptrace.dev/tools/continuous-profiling-tools\"\n  }, \"uptrace\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Ruby\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"stackprof, rbspy \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://uptrace.dev/tools/continuous-profiling-tools\"\n  }, \"uptrace\"), \"\\u200B\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \".NET/C#\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Visual Studio Profiler, dotTrace \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://dev.to/apilover/top-10-profiler-tools-for-optimizing-software-performance-in-2024-5d09\"\n  }, \"dev+1\"), \"\\u200B\")))));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[]}},"pageContext":{"slug":"profiling-tools","node":{"childMdx":{"slug":"profiling-tools"}}}},
    "staticQueryHashes": []}