The Persistence of Vision Raytracer (POV-Ray).

This is the legacy Bug Tracking System for the POV-Ray project. Bugs listed here are being migrated to our github issue tracker. Please refer to that for new reports or updates to existing ones on this system.


FS#227 - Fixed Vector Limitations

Attached to Project: POV-Ray
Opened by Jim Holsenback (jholsenback) - Wednesday, 16 November 2011, 12:21 GMT
Last edited by William F Pokorny (wfpokorny) - Thursday, 18 May 2017, 10:47 GMT
Task Type Unimp. Feature/TODO
Category Source code → Refactoring/Cleanup
Status Tracked on GitHub
Assigned To No-one
Operating System All
Severity High
Priority Normal
Reported Version 3.70 RC3
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No


See this documentation entry for more details.

This task depends upon

Comment by Grimbert Jérôme (Le_Forgeron) - Saturday, 26 November 2011, 16:44 GMT

If the concern seems to be the multiple calls to alloc (on push_back, with lock of allocator), what about:
# using a normal vector (s0 and s1 in media.cpp circa line 700)
# with s0.reserve(lights.size()) and s1.reserve(lights.size()) before the copy in the for loop.

For the other case of FixedSimpleVector, I found only :
* trace.h, where it seems to support a replacement in typedef with normal vector (should I expect some leaks ?)
* frame.h, untested so far.

work in progress.

Comment by Thorsten Fröhlich (thorsten) - Saturday, 26 November 2011, 16:52 GMT

Please don't work on this: It is an extremely fragile construction and only Chris and I know all the details and side effects and rationale for the way it is. It is a workaround, but it isn't there because it is easy to fix, but because it is really, really hard to fix well.

Comment by Grimbert Jérôme (Le_Forgeron) - Saturday, 26 November 2011, 17:52 GMT

For the record, benchmark get a slow down on change of frame.h (from 2:35 to 2:48)
Other changes did not had a significant impact. (but media might not be part of benchmark)

Comment by William F Pokorny (wfpokorny) - Saturday, 05 November 2016, 11:58 GMT
  • Field changed: Status (Assigned → Shelved for peer review)
  • Field changed: Due in Version (3.70 release → Undecided)

Changing the state of this task instead of blindly porting it to github as is. Original wiki link is dead, and other than seeing a discussion about some tricky memory allocation/performance issues I’m lost.

Comment by Christoph Lipka (clipka) - Saturday, 05 November 2016, 13:40 GMT

For the records, the whole issue is about artificial limits to certain features, due to the use of FixedSimpleVector<> to avoid excessive memory allocation/deallocation overhead.

The corresponding hard limits are configured via the *_VECTOR_SIZE macros in /source/core/configcore.h.

Comment by William F Pokorny (wfpokorny) - Thursday, 18 May 2017, 10:47 GMT
  • Field changed: Status (Shelved for peer review → Tracked on GitHub)

Now tracked on github as issue #292.