top | item 4540254

(no title)

rubashov | 13 years ago

You explain the memory locality issue well but the question is how is the situation better in any other language.

discuss

order

loup-vaillant|13 years ago

Oops.

To answer your question, that particular situation would be better in any language that forces you to explicit the reference to "this" (or "self"). Imagine how we could modify C++:

  void member_function() {
    int local_variable++;
    local_variable++;        // This is okay
    member_variable++;       // That should not be allowed
    this->member_variable++; // This should be written instead
  }
Applied to the example in the GGP above:

  void load(Assets* a) {
    for (int j=0; j<this->m_numAssets; j++) {
      loadAsset(a[j]);
      this->m_numLoadedAssets++;
    }
  }
We see that every non-local access is prefixed by something ("this->" and "a[" here). The heavier syntax suggests a heavier cost, so the programmer will more easily think of hoisting those out of the loop, if possible (either manually or through compiler optimizations).