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
- How to call a C language function from x86 assembly code?
- What does: "char *argv[]" mean?
- User input sanitization program, which takes a specific amount of arguments and passes the execution to a bash script
- How to crop a BMP image in half using C
- How can I get the difference in minutes between two dates and hours?
- Why will this code compile although it defines two variables with the same name?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Why can't I use the file pointer after the first read attempt fails?
- #include Header files in C with definition too
- OpenCV2 on CLion
- What is causing the store latency in this program?
- How to refer to the filepath of test data in test sourcecode?
- 9 Digit Addresses in Hexadecimal System in MacOS
- My server TCP doesn't receive messages from the client in C
- Printing the characters obtained from the array s using printf?
Related Questions in VARIABLES
- .bat file - How can I return the value of a variable whose name depends on another variable concatenated with a string in a batch file?
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Does tensorflow have a way of calculating input importance for simple neural networks
- Can you define a variable in ranges in java
- How to only estimate neonatal mortality using syncmrates in Stata?
- PHP string variable to multiple rows in table sql insert
- Good practices for variables in Laravel's layout files
- Variable in Python going up by more than 1 at a time
- Accessing a variable from a string
- Encapsulation does not seem to work in dart
- TypeError: indice_delete() takes 0 positional arguments but 3 were given
- Altova Mapforce - How to use results from Tokenize at the same time in a database call?
- Powershell v5 - variable name replacement when referring to WPF objects
- Use javascript variable in document.querySelector (howTo)
- usage of multinomial assign javascript?
Related Questions in SCOPE
- Why will this code compile although it defines two variables with the same name?
- Preserving DataFrame Modifications Across Options in a Streamlit Application
- Call Databricks API from an ASP.NET Core web application
- How are reference to objects handled in javascript when returning object and modifying them in their original functions
- Why do different delivery methods have different results when applying PHP's global keyword?
- Why is my function overwriting global variable values that are passed to it?
- Lua imported global and local variables with the same name
- I'm having trouble trying to export the data from an object in Flutter using get_it
- Members of struct lose value when created by factory method
- JavaScript function not updating value after a while loop
- Local vs NonLocal Scope Python
- How do I determine scope in an XMLHttp callback function
- Module script-scoped variables not accessable in module function's ArgumentCompleter block
- UnboundLocalError: cannot access local variable 'currentPlayer' where it is not associated with a value
- Calling Fire-And-Forget Methods - Which Scope?
Related Questions in GLOBAL-VARIABLES
- Automatically importing a util module into every file in NodeJS
- How can I use a variable that is defined in one script in a different script in Unity
- Global variable isn't being recognized across functions in python with tkinter
- Why is my function overwriting global variable values that are passed to it?
- Global or accesing global variable datetime string dynamically in web form application using Visual Studio 2022
- What functions can access a global variable that appears in the same file with them?
- I'm having trouble trying to export the data from an object in Flutter using get_it
- Global variable value doesn't change in ISR in C
- Get configuration or global variables into modules definition in NestJS
- How I can reassign value inside of onMount() in sveltekit?
- Best way to use re.sub with a different behavior when first called
- global variables not being updated/ imported properly across modules
- Why does the function always return 0? (function + tkinter + global variables)
- How to set parent variable within a loop in a shell script?
- What could cause linking errors with global variables in header and cpp file?
Related Questions in LIFETIME
- In Rust, possible to downcast a trait to an owned type?
- making a Vec<Child> containing reference to Parent struct?
- A tokio::spawn related lifetime issue
- Return struct containing borrowed value in rust
- In Rust, how to coerce a mutex lock into a reference with identical lifetime?
- Lifetimes problem with split_once method of vectors
- Any downsides to returning a reference to struct variable in Rust?
- Meaning of "trivial eligible constructor" for implicit lifetime types and memcpy
- Rust refrence to Box causing lifetime issues
- Borrow and internal IntoIterator
- Is there any difference between the two implementation of the struct?
- Lifetime parameters in trait declarations
- lambda reference capturing leads to unexpected behaviour
- What is the lifetime of temporary arguments in nested function calls?
- E0507 lifetime may not live long enough
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?
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.