Frames CompartmentReportCommon::loadFrames(double start, double end) const { const auto startTime = getStartTime(); if (start >= getEndTime() || end < startTime || end <= start) return Frames(); const double timestep = getTimestep(); const size_t startFrame = _getFrameNumber(start); end = std::nextafter(end, -INFINITY); const size_t count = _getFrameNumber(end) - startFrame + 1; Frames frames; frames.timeStamps.reset(new std::vector<double>); for (size_t i = 0; i < count; ++i) frames.timeStamps->push_back(startTime + (i + startFrame) * timestep); const auto frameSize = getFrameSize(); frames.data.reset(new floats(frameSize * count)); if (frameSize == 0) return frames; if (!_loadFrames(startFrame, count, frames.data->data())) return Frames(); return frames; }
int main() { Buffer buf; Network n1 = {1, 1}; Network n2 = {1, 2}; Network n3 = {2, 1}; buf[n1] = Frames(); buf[n2] = Frames(); buf[n3] = Frames(); std::cout << "Size, Capacity: " << buf[n1].size() << ", " << buf[n1].capacity() << std::endl; std::cout << "Size, Capacity: " << buf[n2].size() << ", " << buf[n2].capacity() << std::endl; std::cout << "Size, Capacity: " << buf[n3].size() << ", " << buf[n3].capacity() << std::endl; for (auto i = 0; i < 500000; ++i) { buf[n1].emplace_back(i + 1, i + 0, RawData(20, 'A')); } for (auto i = 0; i < 1000000; ++i) { buf[n2].emplace_back(i + 3, i + 2, RawData(20, 'B')); } for (auto i = 0; i < 1000000; ++i) { buf[n3].emplace_back(i + 5, i + 4, RawData(76, 'C')); } std::cout << "Size, Capacity: " << buf[n1].size() << ", " << buf[n1].capacity() << std::endl; std::cout << "Size, Capacity: " << buf[n2].size() << ", " << buf[n2].capacity() << std::endl; std::cout << "Size, Capacity: " << buf[n3].size() << ", " << buf[n3].capacity() << std::endl; int size = sizeof(buf); int sizem = sizeof(buf); for (const auto& n: buf) { size += sizeof(n); sizem += sizeof(n); for (const auto& f: n.second) { size += sizeof(f); sizem += sizeof(f); sizem += f.data.size(); } } std::cout << "Total size: " << size << ", " << sizem << std::endl; return 0; }