{"id":17849,"date":"2022-10-27T10:12:39","date_gmt":"2022-10-27T04:42:39","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/"},"modified":"2022-10-27T10:12:39","modified_gmt":"2022-10-27T04:42:39","slug":"solved-question-1-execution-time-of-calling-the-function","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/","title":{"rendered":"[Solved] Question 1: execution time of calling the function"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-63639678\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"63639678\" data-parentid=\"63639291\" data-score=\"1\" 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>B will not have any effect.  <code>inline<\/code> only suppresses the one-definition rule; it does not force the compiler to inline the function.<\/p>\n<p>C is unlikely to have any impact; if the compiler determines that the function is a good candidate to be inlined, it will do so.  Manually inlining it could make performance <em>worse.<\/em><\/p>\n<p>The other three options (A, D, and E) may all perform better or worse than each other depending on many factors.  The biggest factor in all of this is the compiler.  Modern compilers are very good at optimization.  A, D, and E could all be trivially transformed into each other.  Therefore, they might all be just as fast as each other.<\/p>\n<p>The answer is therefore highly dependent on the specific compiler (and version of that compiler) as well as the compilation flags being used.  Given a specific compiler, I would need to properly benchmark each option with optimizations turned all the way up in order to determine the correct answer.<\/p>\n<p>If I were taking this test, I would refuse to answer this question and send a note to the proctor\/author indicating that the question is defective.<\/p>\n<hr>\n<p>Now that I have that out of the way, <strong>if we assume all compiler optimizations are disabled<\/strong>, D is likely to be the fastest simply because it is branchless. A and E both involve branching, and a failed branch prediction is costly.<\/p>\n<p>I would expect D to be the fastest.  A and E should perform about the same.<\/p>\n<hr>\n<p>In my tests on gcc with <code>-O3<\/code>, E is optimized to a lookup table (like D) but A remains a series of conditional jumps.  So in this particular test, D and E are both the correct answer.<\/p>\n<p>Switching to clang with <code>-O3<\/code>, it optimizes both A and E to use a lookup table (like D).  It generates equivalent assembly for all options.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">3<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Question 1: execution time of calling the function <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] B will not have any effect. inline only suppresses the one-definition rule; it does not force the compiler to inline the function. C is unlikely to have any impact; if the compiler determines that the function is a good candidate to be inlined, it will do so. Manually inlining it could make performance worse. &#8230; <a title=\"[Solved] Question 1: execution time of calling the function\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\" aria-label=\"More on [Solved] Question 1: execution time of calling the function\">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":[324],"class_list":["post-17849","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Question 1: execution time of calling the function - 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-question-1-execution-time-of-calling-the-function\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Question 1: execution time of calling the function - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] B will not have any effect. inline only suppresses the one-definition rule; it does not force the compiler to inline the function. C is unlikely to have any impact; if the compiler determines that the function is a good candidate to be inlined, it will do so. Manually inlining it could make performance worse. ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-27T04:42:39+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-question-1-execution-time-of-calling-the-function\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Question 1: execution time of calling the function\",\"datePublished\":\"2022-10-27T04:42:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\"},\"wordCount\":326,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\",\"name\":\"[Solved] Question 1: execution time of calling the function - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-27T04:42:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Question 1: execution time of calling the function\"}]},{\"@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] Question 1: execution time of calling the function - 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-question-1-execution-time-of-calling-the-function\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Question 1: execution time of calling the function - JassWeb","og_description":"[ad_1] B will not have any effect. inline only suppresses the one-definition rule; it does not force the compiler to inline the function. C is unlikely to have any impact; if the compiler determines that the function is a good candidate to be inlined, it will do so. Manually inlining it could make performance worse. ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/","og_site_name":"JassWeb","article_published_time":"2022-10-27T04:42:39+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-question-1-execution-time-of-calling-the-function\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Question 1: execution time of calling the function","datePublished":"2022-10-27T04:42:39+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/"},"wordCount":326,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/","url":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/","name":"[Solved] Question 1: execution time of calling the function - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-27T04:42:39+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-question-1-execution-time-of-calling-the-function\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Question 1: execution time of calling the function"}]},{"@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\/17849","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=17849"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/17849\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=17849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=17849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=17849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}