I had a couple thoughts on this. The first is that allocating global variables may be faster, since they are only allocated once, at the time the program is first spawned, whereas local variables must be allocated every time a function is called. My second thought is that since local variables are on the stack, they are accessed through the base pointer register, so the value stored in the base pointer must be decremented every time a local variable is accessed; global variables are accessed directly through their static addresses in the data segment. Is my thinking accurate?
Are global variables faster than local variables in C?
7.1k views Asked by user628544 At
1
There are 1 answers
Related Questions in C
- Cannot get the table that I need in latex
- Mathematics not working when converting from LaTeX to docx (through markdown) using pandoc
- Why reflectbox doesn't work when pdflatex is called with the dvips option of graphicx package
- os.path.getsize Invalid syntax error
- How to put square brackets on elements in specific rows of a matrix in R
- How can I get all the `\begin{definition}...\end{definition}` blocks in a LaTeX file?
- Emacs and Skim not in Sync fails to open
- How to change arrow tip in tikz
- pyreport LaTeX formulae not working
- Latex \newcommand in kramdown
Related Questions in VARIABLES
- Cannot get the table that I need in latex
- Mathematics not working when converting from LaTeX to docx (through markdown) using pandoc
- Why reflectbox doesn't work when pdflatex is called with the dvips option of graphicx package
- os.path.getsize Invalid syntax error
- How to put square brackets on elements in specific rows of a matrix in R
- How can I get all the `\begin{definition}...\end{definition}` blocks in a LaTeX file?
- Emacs and Skim not in Sync fails to open
- How to change arrow tip in tikz
- pyreport LaTeX formulae not working
- Latex \newcommand in kramdown
Related Questions in SCOPE
- Cannot get the table that I need in latex
- Mathematics not working when converting from LaTeX to docx (through markdown) using pandoc
- Why reflectbox doesn't work when pdflatex is called with the dvips option of graphicx package
- os.path.getsize Invalid syntax error
- How to put square brackets on elements in specific rows of a matrix in R
- How can I get all the `\begin{definition}...\end{definition}` blocks in a LaTeX file?
- Emacs and Skim not in Sync fails to open
- How to change arrow tip in tikz
- pyreport LaTeX formulae not working
- Latex \newcommand in kramdown
Related Questions in GLOBAL-VARIABLES
- Cannot get the table that I need in latex
- Mathematics not working when converting from LaTeX to docx (through markdown) using pandoc
- Why reflectbox doesn't work when pdflatex is called with the dvips option of graphicx package
- os.path.getsize Invalid syntax error
- How to put square brackets on elements in specific rows of a matrix in R
- How can I get all the `\begin{definition}...\end{definition}` blocks in a LaTeX file?
- Emacs and Skim not in Sync fails to open
- How to change arrow tip in tikz
- pyreport LaTeX formulae not working
- Latex \newcommand in kramdown
Related Questions in LIFETIME
- Cannot get the table that I need in latex
- Mathematics not working when converting from LaTeX to docx (through markdown) using pandoc
- Why reflectbox doesn't work when pdflatex is called with the dvips option of graphicx package
- os.path.getsize Invalid syntax error
- How to put square brackets on elements in specific rows of a matrix in R
- How can I get all the `\begin{definition}...\end{definition}` blocks in a LaTeX file?
- Emacs and Skim not in Sync fails to open
- How to change arrow tip in tikz
- pyreport LaTeX formulae not working
- Latex \newcommand in kramdown
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
It's rather inaccurate.
If you study computer architecture, you'll find out that the fastest storage are the registers, followed by the caches, followed by the RAM. The thing about local variables is that the compiler optimizes them to be allocated from the registers if possible, or from the cache if not. This is why local variables are faster.
For embedded systems, sure it might be possible to compile to a tiny memory model in which case your data segment may possibly fit into a modern controller's SRAM cache. But in such cases, your local variable usage would also be very tight such that they are probably operating entirely on registers.
Conclusion: In most cases, local variables will be faster than global variables.