Razii wrote:
> On Thu, 10 Apr 2008 19:14:12 -0500, Razii
> <> wrote:
>
>>> However, part of my C++ programming style just naturally also avoids
>>> doing tons of news and deletes in tight loops (which is, again, very
>>> different from eg. Java programming where you basically have no choice)
>
> Let's test this about the keyword "new" and tight loops. Because in
> most cases Java allocates new memory blocks on it's internal heap and
> bypasses memory allocation mechanisms of the underlying OS, the
> keyword "new" doesn't mean the same thing that it does in C++, where
> each "new" allocation request is sent to the operating system, which
> is very slow.
>
> Creating 10000000 new objects with the keyword 'new' in tight loop.
>
If a C++ programmer had to do this in the most efficient way possible,
he/she would use a custom allocator.
> int main(int argc, char *argv[]) {
>
> clock_t start=clock();
> for (int i=0; i<=10000000; i++) {
> Test *test = new Test(i);
> if (i % 5000000 == 0)
> cout << test;
> }
Leaks 10000000 objects.
>
> for (int i=0; i<=10000000; i++) {
> Test test = new Test(i);
> if (i % 5000000 == 0)
> System.out.println (test);
> }
Does the Java allocator/GC combination recycle the objects in the loop?
--
Ian Collins.
|