Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by nTu4Ka · Nov 03, 2014 at 06:43 PM · c#performance optimization

Performance - Calculating Length in loops

Hi,

does script calculate length of an array every cycle?

For example in a loop

for (int i = 0; i < ArrayName.Length; i++)

is "ArrayName.Length" calculated every iteration?

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image ExtremePowers · Nov 03, 2014 at 06:45 PM 0
Share

I think it is, because if you set it to

 i < i + 1

You would get an infinite loop

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Kiwasi · Nov 03, 2014 at 07:09 PM

ArrayName.length is looked up every iteration. But due to the fixed length nature of arrays it's not calculate every time.

This is only valid so long as you don't resize the array in your loop.

For other reasons it's generally considered bad practice to add or remove an item from a collection while iterating over it.

Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image nTu4Ka · Nov 03, 2014 at 07:17 PM 0
Share

This looks more realistic since it is a commonly used feature. It would be strange if they have a thing like garbage collector but no array length storing.

avatar image Kiwasi · Nov 03, 2014 at 07:20 PM 0
Share

You could easily run a bench mark to compare. But my gut feel is the performance increase will barely be worth the effort.

avatar image nTu4Ka · Nov 03, 2014 at 08:24 PM 0
Share

It's a good practice and overall habit after all. :)

avatar image
0

Answer by Tanshaydar · Nov 03, 2014 at 06:53 PM

From Google's JavaScript styling, I noticed they use

for( var i = 0, ii = array.length; i < ii; i++) { // some stuff here }

So I assume that, it calculates array length each iteration, which is actually a performance loss. I am not sure if it is the same for C#, but considering the syntax, it pretty much calls the array length each iteration (maybe it holds that somewhere and does not count it each time, I don't know, Unity's compiler is a mystery to me, and it uses .Net 2.0 which is pretty old).

By convention, I do not call array length each iteration but I do not see any performance difference in my work either.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

28 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Component.GetComponent() very slow 0 Answers

Code execution is slower in Unity then outside of Unity 0 Answers

Renderer on object disabled after level reload 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges