[Kstars-devel] more on memory usage
Jason Harris
kstars at 30doradus.org
Mon Oct 6 16:02:49 CEST 2003
I have also ruled out the possibility that there's a memory problem in the
source/sink data reader implemented for stars. I replaced that code with a
simple for-loop through the hipNNN.dat files. The program size when running
is the same (109 MB) in this case.
Jason
On Monday 06 October 2003 09:22 am, Jason Harris wrote:
> Hello,
>
> Some further experiments, but unfortunately no new insights.
> I repeated Heiko's experiment of running KStars normally, and again with
> each star added twice in KStarsData::processStar(). The difference in
> memory usage between these two runs was 61 MB, implying 6.1e7/126,000 = 484
> bytes per star. This is 120 bytes larger than sizeof(StarObject).
>
> I then modified the for-loop in KStarsData::readStarData() so that not all
> of the hipNNN.dat files were read. I ran three times, reading 0, 1, and 2
> of the star data files:
>
> 0 stars, size = 39.068 MB
> 1000 stars, size = 39.804 MB (736 Bytes per star)
> 2000 stars, size = 40.452 MB (692 Bytes per star)
>
> It's interesting that the effective size per star is lower for larger
> numbers of stars. This could mean that there is some extra data associated
> with the list, but not with individual stars, or that the first 1000 stars
> really do take more memory (because more of them have names, perhaps).
>
> To test this, I repeated the runs reading only 1 and 2 of the hipNNN.dat
> files, but I started at hip021.dat instead of hip001.dat. None of the
> stars in hip021.dat or hip022.dat are named. The result:
>
> 1000 stars, size = 39.708 MB (640 Bytes per star)
> 5000 stars, size = 42.172 MB (620 Bytes per star)
>
> So, indeed the star names seem to add substantial memory, but we are still
> far above 364 Bytes per star. Plus, the fact that loading the full list of
> 126,000 stars results in only 484 Bytes per star seems to support the
> conclusion that the extra memory usage is (at least partially) not
> associated with individual stars, but with the aggregate list somehow.
>
> I looked at the star-loading classes (FileSource and KSFileReader) for
> clues, but nothing appeared obviously wrong. FileSource uses an array of
> QStrings, but these aren't dynamically allocated so that memory should be
> freed when the object is destructed, right? What's the advantage to using
> an array here, rather than a QStringList?
>
> Jason
--
KStars: A K Desktop Planetarium
http://edu.kde.org/kstars
More information about the Kstars-devel
mailing list