- Timestamp:
- 10/13/15 15:14:22 (9 years ago)
- Location:
- XIOS/trunk/src/node
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/context.cpp
r729 r730 25 25 : CObjectTemplate<CContext>(), CContextAttributes() 26 26 , calendar(), hasClient(false), hasServer(false), isPostProcessed(false), finalized(false) 27 , dataSize_(),idServer_(), client(0), server(0)27 , idServer_(), client(0), server(0) 28 28 { /* Ne rien faire de plus */ } 29 29 … … 31 31 : CObjectTemplate<CContext>(id), CContextAttributes() 32 32 , calendar(), hasClient(false), hasServer(false), isPostProcessed(false), finalized(false) 33 , dataSize_(),idServer_(), client(0), server(0)33 , idServer_(), client(0), server(0) 34 34 { /* Ne rien faire de plus */ } 35 35 … … 795 795 CFile::mode_attr::t_enum mode = hasClient ? CFile::mode_attr::write : CFile::mode_attr::read; 796 796 797 // Set of grid used by enabled fields 798 std::set<StdString> usedGrid; 797 std::map<int, StdSize> dataSize; 799 798 800 799 // Find all reference domain and axis of all active fields 801 int numEnabledFiles = this->enabledFiles.size();802 for ( int i = 0; i < numEnabledFiles; ++i)800 size_t numEnabledFiles = this->enabledFiles.size(); 801 for (size_t i = 0; i < numEnabledFiles; ++i) 803 802 { 804 803 CFile* file = this->enabledFiles[i]; … … 808 807 { 809 808 std::vector<CField*> enabledFields = file->getEnabledFields(); 810 int numEnabledFields = enabledFields.size();811 for ( int j = 0; j < numEnabledFields; ++j)809 size_t numEnabledFields = enabledFields.size(); 810 for (size_t j = 0; j < numEnabledFields; ++j) 812 811 { 813 StdString currentGrid = enabledFields[j]->grid->getId();814 812 const std::map<int, StdSize> mapSize = enabledFields[j]->getGridDataSize(); 815 if (dataSize_.empty()) 813 std::map<int, StdSize>::const_iterator it = mapSize.begin(), itE = mapSize.end(); 814 for (; it != itE; ++it) 816 815 { 817 dataSize_ = mapSize; 818 usedGrid.insert(currentGrid); 819 } 820 else 821 { 822 std::map<int, StdSize>::const_iterator it = mapSize.begin(), itE = mapSize.end(); 823 if (usedGrid.find(currentGrid) == usedGrid.end()) 824 { 825 for (; it != itE; ++it) 826 { 827 if (0 < dataSize_.count(it->first)) dataSize_[it->first] += it->second; 828 else dataSize_.insert(make_pair(it->first, it->second)); 829 } 830 } else 831 { 832 for (; it != itE; ++it) 833 { 834 if (0 < dataSize_.count(it->first)) 835 if (CXios::isOptPerformance) dataSize_[it->first] += it->second; 836 else 837 { 838 if (dataSize_[it->first] < it->second) dataSize_[it->first] = it->second; 839 } 840 else dataSize_.insert(make_pair(it->first, it->second)); 841 } 842 } 816 // If dataSize[it->first] does not exist, it will be zero-initialized 817 // so we can use it safely without checking for its existance 818 if (CXios::isOptPerformance) 819 dataSize[it->first] += it->second; 820 else if (dataSize[it->first] < it->second) 821 dataSize[it->first] = it->second; 843 822 } 844 823 } … … 846 825 } 847 826 848 return dataSize _;827 return dataSize; 849 828 } 850 829 -
XIOS/trunk/src/node/context.hpp
r711 r730 222 222 bool isPostProcessed; 223 223 bool finalized; 224 std::map<int, StdSize> dataSize_;225 224 StdString idServer_; 226 225 CGarbageCollector garbageCollector;
Note: See TracChangeset
for help on using the changeset viewer.