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 xaddict · Dec 20, 2009 at 04:09 PM · optimizationcollectionsoutofbounds

Which method of '2D' arrays is faster? 1D arrays with Objects or 1D Arrays with 1D arrays?

Hello,

I'd like to know which method is faster when it comes to reading 2D arrays with variable lengths (jagged, not matrices):

  • An Array filled with objects with key-values
  • An Array filled with Arrays

reading an a*rray filled with arrays* is done with:

array[position][subposition]

whereas reading an array filled with objects is done with:

array[position].value

in code, the latter is way more convenient as you can assign names, but the former uses only numeral accessors, making it use less code. Which one uses less processing power? and why?

last sub-question: is there an even faster way of 2D (variable length) arrays? and how to do this?

Comment
Add comment
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

2 Replies

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

Answer by Ricardo · Dec 20, 2009 at 05:29 PM

Array addressing will always be faster than dictionaries (your "key-values"), but they're not equivalent, so either I'm not understanding the question or you're mixing apples and orangutans.

You would use an array of array when what you're storing on each array[x][y] are all objects of the same type. If what you're intending to do is replace an array of objects with an array of property-containing arrays, where say:

  • array[0][0] is the name
  • array[0][1] is the position
  • array[0][2] is the size
  • etc.

then I would strongly advise against it. The small performance difference you'll obtain versus creating an array of objects will not be worth losing the advantages of compiler checks, and in the end you're likely to end up writing more code just for sanity check.

As a general suggestion, do not try to perform tricky optimizations until you've measured if they will be worth it.

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
avatar image
0

Answer by Peter Alexander · Dec 21, 2009 at 03:45 AM

Arrays filled with objects is probably faster since there would be no need to do bounds checking on a subarray. Then again, the JIT compiler would probably be clever enough to realise that your subarray indices would never cause out-of-bounds errors.

In any case, as Ricardo says, use whatever makes more sense in the context of your program. The difference -- if any -- will be negligible.

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

No one has followed this question yet.

Related Questions

How do I change GUI elements from outside of the OnGUI function? 3 Answers

Can someone explain SendMessage to me? 3 Answers

Any way to speed up WWW requests? 2 Answers

Releasing assets loaded from asset bundle 1 Answer

Are .transform .gameObject .rigidbody component calls or just pointers? 3 Answers


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