Stefan Krah <ste...@bytereef.org> added the comment:

> For large allocations, you'll probably be better off implementing your own 
> aligned allocator on top of calloc than implementing your own calloc on top 
> of an aligned allocator. (It's O(1) overhead versus O(n).) And once you're 
> doing that you might want to use the same code for regular allocations too, 
> so that you don't need to keep track of whether each memory block used 
> aligned_calloc or aligned_malloc and can treat them the same... Depends on 
> your exact circumstances.

Yes, but if the whole array is initialized with actual values, then
the memset() overhead is not very large (something like 16% here).

If uninitialized (or very sparse), the overhead is of course gigantic.

What is more, in some crude tests the posix_memalign() performance isn't
that great compared to malloc()/calloc().

C11 aligned_alloc() is also quite a bit faster than posix_memalign() here.

I think you're right that a hand-rolled solution on top of calloc() is
best for my use case.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue18835>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to