{"id":5929,"date":"2025-01-08T16:02:31","date_gmt":"2025-01-08T08:02:31","guid":{"rendered":"https:\/\/blog.qdac.cc\/?p=5929"},"modified":"2025-01-10T21:15:01","modified_gmt":"2025-01-10T13:15:01","slug":"%e6%95%99%e7%a8%8bqprofile%e6%95%99%e7%a8%8b%e4%b9%8b%e4%ba%8c%ef%bc%9a%e5%bc%82%e6%ad%a5%e6%93%8d%e4%bd%9c%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e5%bc%95%e7%94%a8%e5%85%b3%e7%b3%bb%e8%b7%9f%e8%b8%aa","status":"publish","type":"post","link":"https:\/\/blog.qdac.cc\/?p=5929","title":{"rendered":"[\u6559\u7a0b]QProfile\u6559\u7a0b\u4e4b\u4e8c\uff1a\u5f02\u6b65\u64cd\u4f5c\u51fd\u6570\u8c03\u7528\u5f15\u7528\u5173\u7cfb\u8ddf\u8e2a"},"content":{"rendered":"\n<p>\u5728 QProfile \u4e2d\uff0cTQProfile.Calc \u51fd\u6570\u5305\u542b\u4e24\u4e2a\u53c2\u6570\uff0c\u6211\u4eec\u5148\u770b\u4e0b\u5176\u5177\u4f53\u58f0\u660e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> class function Calc(const AName: String; AStackRef: PQProfileStack = nil): TQProfileCalcResult;<\/code><\/pre>\n\n\n\n<p>\u8fd9\u4e2a\u51fd\u6570\u6709\u4e24\u4e2a\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AName \u7528\u6765\u6807\u8bb0\u5f53\u524d\u51fd\u6570\u7684\u540d\u79f0\uff0c\u5bf9\u4e8e TQProfile \u6765\u8bf4\uff0c\u8fd9\u4e2a\u540d\u79f0\u7531\u4e8e\u662f\u7528\u6237\u6307\u5b9a\u7684\uff0c\u7406\u8bba\u4e0a\u53ef\u4ee5\u662f\u4efb\u610f\u503c\uff0c\u6b63\u5e38\u6765\u8bf4\uff0c\u4e00\u822c\u6211\u4eec\u5bf9\u5e94\u51fd\u6570\u540d\u3002<\/li>\n\n\n\n<li>AStackRef \u7528\u6765\u6807\u8bb0\u5f53\u524d\u5bf9\u5e94\u7684\u8c03\u7528\u7684\u53c2\u8003\u6765\u6e90\uff0c\u662f\u4e00\u4e2a\u53ef\u9009\u53c2\u6570\uff0c\u9ed8\u8ba4\u4e3a\u7a7a\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u800c\u51fd\u6570\u95f4\u7684\u8c03\u7528\uff0c\u6211\u4eec\u53ef\u4ee5\u5206\u4e3a\u540c\u6b65\u8c03\u7528\u548c\u5f02\u6b65\u8c03\u7528\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5bf9\u4e8e\u540c\u6b65\u8c03\u7528\uff0c\u6211\u4eec\u4e0d\u9700\u8981\u4efb\u4f55\u989d\u5916\u5904\u7406\uff0c\u56e0\u4e3a\u5b83\u4eec\u4e4b\u95f4\u7684\u8c03\u7528\u5173\u7cfb\u662f\u5728\u540c\u4e00\u4e2a\u7ebf\u7a0b\u4e2d\u6709\u660e\u786e\u7684\u987a\u5e8f\u5173\u7cfb\u7684\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u5f02\u6b65\u8c03\u7528\uff0c\u7531\u4e8e\u51fd\u6570\u53ef\u80fd\u4e0d\u5728\u540c\u4e00\u4e2a\u7ebf\u7a0b\u4e2d\u6267\u884c\uff0c\u660e\u663e\u5728\u8c03\u7528\u6808\u4e2d\u662f\u770b\u4e0d\u5230\u51fd\u6570\u4e4b\u95f4\u7684\u8c03\u7528\u987a\u5e8f\u903b\u8f91\u7684\u3002\n<ul class=\"wp-block-list\">\n<li>\u65b9\u5f0f 1\uff1a\u76f4\u63a5\u5c06 AName \u53c2\u6570\u8bbe\u7f6e\u4e3a  XXX#YY\uff0c\u5176\u4e2d XXX \u4e3a\u539f\u59cb\u8c03\u7528\u51fd\u6570\u540d\u79f0<\/li>\n\n\n\n<li>\u65b9\u5f0f 2\uff1a\u901a\u8fc7 AStackRef \u53c2\u6570\u8bbe\u7f6e\u4e3a\u8c03\u7528\u8005\uff0c\u4ece\u800c\u660e\u786e\u5efa\u7acb\u5f15\u7528\u5173\u7cfb<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u793a\u4f8b<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528\u4e66\u7b7e\u6a21\u5f0f\u6765\u5904\u7406\u5f15\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>procedure TForm1.Button5Click(Sender: TObject);\nbegin\n  TQProfile.Calc('TForm1.Button5Click');\n  DoProfile(0);\n  TThread.ForceQueue(nil,\n    procedure\n    begin\n      TQProfile.Calc('TForm1.Button5Click.ForceQueue#TForm1.Button5Click');\n      ShowMessage('Queued clicked');\n    end);\nend;<\/code><\/pre>\n\n\n\n<p>2. \u4f7f\u7528 AStackRef \u53c2\u6570\u6765\u5904\u7406\u5f15\u7528<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>procedure TForm1.Button1Click(Sender: TObject);\nbegin\n  \/\/ \u5b9a\u4e49\u4e00\u4e2a\u5c40\u90e8\u53d8\u91cf\u7f13\u5b58\u5f53\u524d\u6808\u4fe1\u606f\uff0c\u4ee5\u4fbf TThread.ForceQueue \u4e2d\u80fd\u591f\u8bb0\u5f55\u5f15\u7528\u4fe1\u606f\uff0c\u5982\u679c\u4e0d\u9700\u8981\uff0c\u521a\u53ef\u4ee5\u5ffd\u7565\u8fd4\u56de\u503c\n  var\n  AProfile := TQProfile.Calc('TForm1.Button1Click').CurrentStack;\n  DoProfile(0);\n  TThread.ForceQueue(nil,\n    procedure\n    begin\n      TQProfile.Calc('TForm1.Button1Click.ForceQueue', AProfile);\n      ShowMessage('Queued clicked');\n    end);\nend;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u8f93\u51fa\u7ed3\u679c<\/h2>\n\n\n\n<p>\u4e0b\u9762\u5de6\u53f3\u5206\u522b\u662f\u4e66\u7b7e\u6216\u53c2\u6570\u7684\u8f93\u51fa\u7ed3\u679c\uff0c\u5b9e\u9645\u6700\u7ec8\u751f\u6210\u7684\u6548\u679c\u662f\u4e00\u81f4\u7684\uff1a<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>&#91;\n  {\n    \"threadId\":10128,\n    \"chains\":&#91;\n      {\n        \"name\":\"TForm1.Button5Click\",\n        \"maxNestLevel\":0,\n        \"runs\":1,\n        \"minTime\":0,\n        \"maxTime\":888,\n        \"totalTime\":888,\n        \"avgTime\":888,\n        \"children\":&#91;\n          {\n            \"name\":\"TForm1.DoProfile\",\n            \"maxNestLevel\":32,\n            \"runs\":1,\n            \"minTime\":0,\n            \"maxTime\":610,\n            \"totalTime\":610,\n            \"avgTime\":610\n          }\n        ]\n      },\n      {\n        \"name\":\"TForm1.Button5Click.ForceQueue\",\n        \"maxNestLevel\":0,\n        \"runs\":1,\n        \"minTime\":0,\n        \"maxTime\":11459085,\n        \"totalTime\":11459085,\n        \"avgTime\":11459085,\n        \"refs\":&#91;\n          \"TForm1.Button5Click\"\n        ]\n      }\n    ]\n  }\n]<\/code><\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>&#91;\n  {\n    \"threadId\":848,    \n    \"chains\":&#91;\n      {\n        \"name\":\"TForm1.Button1Click\",\n        \"maxNestLevel\":0,\n        \"runs\":1,\n        \"minTime\":0,\n        \"maxTime\":786,\n        \"totalTime\":786,\n        \"avgTime\":786,\n        \"children\":&#91;\n          {\n            \"name\":\"TForm1.DoProfile\",\n            \"maxNestLevel\":32,\n            \"runs\":1,\n            \"minTime\":0,\n            \"maxTime\":551,\n            \"totalTime\":551,\n            \"avgTime\":551\n          }\n        ]\n      },\n      {\n        \"name\":\"TForm1.Button1Click.ForceQueue\",\n        \"maxNestLevel\":0,\n        \"runs\":1,\n        \"minTime\":0,\n        \"maxTime\":11887781,\n        \"totalTime\":11887781,\n        \"avgTime\":11887781,\n        \"refs\":&#91;\n          \"TForm1.Button1Click\"\n        ]\n      }\n    ]\n  }\n]<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728 QProfile \u4e2d\uff0cTQProfi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","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":[8,9,834],"tags":[],"class_list":["post-5929","post","type-post","status-publish","format-standard","hentry","category-delphi","category-qdac","category-qprofile"],"views":995,"_links":{"self":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/5929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5929"}],"version-history":[{"count":4,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/5929\/revisions"}],"predecessor-version":[{"id":5956,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/5929\/revisions\/5956"}],"wp:attachment":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}