Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

But isn't usually when using lists performance is dead anyway (due to cache misses).


"List" is usually a generic term for any data structure that can hold many items, and that has an API for adding or removing items. This can be implemented using an array, a linked-list, a hasthable, or a more advanced data structure.

Also, in languages with GCs, linked lists do not necessarily cause more cache misses than arrays, due to the way allocation works (this is especially true if you have a compacting GC, but bump-pointer allocation often makes it work even when you don't).


Linked-lists, maybe, but `list`s in Python are just resizable arrays.


resizable arrays of pointers to objects stored elsewhere, which is going to blow through your cache anyway, especially when you start accessing those objects' attributes. so it's more a memory management strategy than a performance optimization.


But when removing an item it’s not necessary to visit every element, just re-arrange the pointers (and in CPython, modify the reference count of the item that was removed).


When removing an item by value (being the use case in this thread), you do need to visit the elements to check the value.


Yes but the problem there is not that your list is backed by a linked list or an array, it's that every single value is boxed and needs dereferencing. The difference between no hops and one hop totally trumps one hop vs two hops.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: