Null references redux
Jeremie Pelletier
jeremiep at gmail.com
Tue Sep 29 07:41:33 PDT 2009
Yigal Chripun wrote:
> On 29/09/2009 00:31, Nick Sabalausky wrote:
>> "Yigal Chripun"<yigal100 at gmail.com> wrote in message
>> news:h9r37i$tgl$1 at digitalmars.com...
>>>
>>>>
>>>> These aren't just marginal performance gains, they can easily be up to
>>>> 15-30% improvements, sometimes 50% and more. If this is too complex or
>>>> the risk is too high for you then don't use a systems language :)
>>>
>>> your approach makes sense if your are implementing say a calculator.
>>> It doesn't scale to larger projects. Even C++ has overhead compared to
>>> assembly yet you are writing performance critical code in c++, right?
>>>
>>
>> It's *most* important on larger projects, because it's only on big
>> systems
>> where small inefficiencies actually add up to a large performance drain.
>>
>> Try writing a competitive real-time graphics renderer or physics
>> simulator
>> (especially for a game console where you're severely limited in your
>> choice
>> of compiler - if you even have a choice), or something like Pixar's
>> renderer
>> without *ever* diving into asm, or at least low-level "unsafe" code. And
>> when it inevitably hits some missing optimization in the compiler and
>> runs
>> like shit, try explaining to the dev lead why it's better to beg the
>> compiler vender to add the optimization you want and wait around
>> hoping they
>> finally do so, instead of just throwing in that inner optimization in the
>> meantime.
>>
>> You can still leave the safe/portable version in there for platforms for
>> which you haven't provided a hand-optimization. And unless you didn't
>> know
>> what you were doing, that inner optimization will still be small and
>> highly
>> isolated. And since it's so small and isolated, not only can you still
>> throw
>> in tests for it, but it's not as much harder as you would think to
>> veryify
>> correctness. And if/when your compiler finally does get the
>> optimization you
>> want, you can just rip out the hand-optimization and revert back to that
>> "safe/portable" version that you had still left in anyway as a fallback.
>>
>>
>
> I think you took my post to an extreme, I actually do agree with the
> above description.
>
> what you just said was basically:
> 1. write portable/safe version
> 2. profile to find bottlenecks that the tools can't optimize and
> optimize those only while still keeping the portable version.
>
> My objection was to what i feel was Jeremie's description of writing
> code from the get go in low level hand optimized way instead of what you
> described in your own words:
That wasn't what I said, I don't low level hand optimize everything, I
do profiling first, only a few parts *known* to me to require
optimizations (ie matrix multiplication) are written in sse from the
beginning with a high level fallback, there just happen to be a lot of
them :)
What I argued about was your view on today's software being too big and
complex to bother optimize it.
>> And unless you didn't know
>> what you were doing, that inner optimization will still be small and
>> highly
>> isolated.
More information about the Digitalmars-d
mailing list