{"id":11651,"date":"2022-09-28T04:19:06","date_gmt":"2022-09-27T22:49:06","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/"},"modified":"2022-09-28T04:19:06","modified_gmt":"2022-09-27T22:49:06","slug":"solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/","title":{"rendered":"[Solved] How do I retrieve the processor time in Linux without function calls?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-47003703\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"47003703\" data-parentid=\"47003535\" data-score=\"6\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You should read <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/time.7.html\">time(7)<\/a>. Be aware that even written in assembler, your program will be rescheduled at arbitrary moments (perhaps a <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Context_switch\">context switch<\/a> every millisecond; look also into <code>\/proc\/interrupts<\/code> and see <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man5\/proc.5.html\">proc(5)<\/a>). Then any hardware timer is meaningless. Even using the <code>RDTSC<\/code> x86-64 machine instruction to read the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Time_Stamp_Counter\">hardware timestamp counter<\/a> is useless (since after any context switch it would be wrong, and the Linux kernel is doing <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Preemption_(computing)\">preemptive<\/a> scheduling, which does happen at any time).<\/p>\n<p>You should consider <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/clock_gettime.2.html\">clock_gettime(2)<\/a>. It is really fast (about 3.5 or 4 nanoseconds on my i5-4690S, when measuring thousands of calls to it) because of <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/vdso.7.html\">vdso(7)<\/a>. BTW it is a <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/System_call\">system call<\/a>, so you might code directly the assembler instructions doing them. I don&#8217;t think it is worth the trouble (and could be <em>slower<\/em> than the vdso call).<\/p>\n<p>BTW, any kind of profiling or benchmarking is somehow intrusive.<\/p>\n<p>At last, if your benchmarked function runs very quickly (much less than a microsecond), <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/CPU_cache\">cache<\/a> misses become significant and even dominant (remember that an L3 cache miss requiring effective access to DRAM modules lasts several hundred nanoseconds, enough to run hundreds of machine instructions in L1 I-cache). You might (and probably should) try to benchmark several (hundreds of) consecutive calls. But you won&#8217;t be able to measure precisely and accurately.<\/p>\n<p>Hence I believe that <strong>you <em>cannot<\/em> do much better than using <code>clock_gettime<\/code><\/strong> and <em>I don&#8217;t understand why it is not good enough for your case&#8230;<\/em> BTW, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man3\/clock.3.html\">clock(3)<\/a> is calling <code>clock_gettime<\/code> with  <code>CLOCK_PROCESS_CPUTIME_ID<\/code> so IMHO it should be enough, and simpler.<\/p>\n<p><sup>In other words, I believe that avoiding any function calls is a misconception from your part. Remember that function call overhead is a lot cheaper than cache misses!<\/sup><\/p>\n<p>See this answer to a related question (as unclear as yours); consider also using  <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/perf.1.html\">perf(1)<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/gprof.1.html\">gprof(1)<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/oprofile.1.html\">oprofile(1)<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man1\/time.1.html\">time(1)<\/a>. See this.<\/p>\n<p>At last, you should consider asking more <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Optimizing_compiler\">optimizations<\/a> from your compiler. Have you considered compiling <em>and linking<\/em> with <code>g++ -O3 -flto -march=native<\/code> (with link-time optimizations).<\/p>\n<p>If your code is of numerical and vectorial nature (so obviously and massively parallelisable), you could even consider spending <em>months<\/em> of your development time to port its core code (the numerical <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Compute_kernel\">compute kernels<\/a>) on your <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/General-purpose_computing_on_graphics_processing_units\">GPGPU<\/a> in <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/OpenCL\">OpenCL<\/a> or <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/CUDA\">CUDA<\/a>. But are you sure it is worth such an effort? You&#8217;ll need to tune and redevelop your code when changing hardware!<\/p>\n<p>You could also redesign your application to use <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Thread_(computing)#Multithreading\">multi-threading<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Just-in-time_compilation\">JIT compilation<\/a> and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Partial_evaluation\">partial evaluation<\/a> and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Metaprogramming\">metaprogramming<\/a> techniques, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Multiprocessing\">multiprocessing<\/a> or <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cloud_computing\">cloud-computing<\/a> (with <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Inter-process_communication\">inter-process communication<\/a>, such as <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/socket.7.html\">socket(7)<\/a>-s, maybe using <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/zeromq.org\/\">0mq<\/a> or other messaging libraries). This could take <em>years<\/em> of development. There is <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/No_Silver_Bullet\"><strong>No Silver Bullet<\/strong><\/a>.<\/p>\n<p><sup>(Don&#8217;t forget to take development costs into account; prefer algorithmic improvements when possible.)<\/sup><\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">13<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How do I retrieve the processor time in Linux without function calls? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You should read time(7). Be aware that even written in assembler, your program will be rescheduled at arbitrary moments (perhaps a context switch every millisecond; look also into \/proc\/interrupts and see proc(5)). Then any hardware timer is meaningless. Even using the RDTSC x86-64 machine instruction to read the hardware timestamp counter is useless (since &#8230; <a title=\"[Solved] How do I retrieve the processor time in Linux without function calls?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\" aria-label=\"More on [Solved] How do I retrieve the processor time in Linux without function calls?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[465,324,424,443],"class_list":["post-11651","post","type-post","status-publish","format-standard","hentry","category-solved","tag-assembly","tag-c","tag-linux","tag-unix"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] How do I retrieve the processor time in Linux without function calls? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How do I retrieve the processor time in Linux without function calls? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You should read time(7). Be aware that even written in assembler, your program will be rescheduled at arbitrary moments (perhaps a context switch every millisecond; look also into \/proc\/interrupts and see proc(5)). Then any hardware timer is meaningless. Even using the RDTSC x86-64 machine instruction to read the hardware timestamp counter is useless (since ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-27T22:49:06+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How do I retrieve the processor time in Linux without function calls?\",\"datePublished\":\"2022-09-27T22:49:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\"},\"wordCount\":472,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"assembly\",\"c++\",\"linux\",\"unix\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\",\"name\":\"[Solved] How do I retrieve the processor time in Linux without function calls? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-27T22:49:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How do I retrieve the processor time in Linux without function calls?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How do I retrieve the processor time in Linux without function calls? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How do I retrieve the processor time in Linux without function calls? - JassWeb","og_description":"[ad_1] You should read time(7). Be aware that even written in assembler, your program will be rescheduled at arbitrary moments (perhaps a context switch every millisecond; look also into \/proc\/interrupts and see proc(5)). Then any hardware timer is meaningless. Even using the RDTSC x86-64 machine instruction to read the hardware timestamp counter is useless (since ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/","og_site_name":"JassWeb","article_published_time":"2022-09-27T22:49:06+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How do I retrieve the processor time in Linux without function calls?","datePublished":"2022-09-27T22:49:06+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/"},"wordCount":472,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["assembly","c++","linux","unix"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/","url":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/","name":"[Solved] How do I retrieve the processor time in Linux without function calls? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-27T22:49:06+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-retrieve-the-processor-time-in-linux-without-function-calls\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How do I retrieve the processor time in Linux without function calls?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/11651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=11651"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/11651\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=11651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=11651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=11651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}