Skip to main content
Solved

optimizing memory usage

  • October 14, 2014
  • 1 reply
  • 24 views

Hi,

 

I have a large amout of data in csv files 4 mil in each. Always gets memory problem when reading the data. The rest of the process is fine. I use a 64 bit fme on a powerful machine and the memory is only on 60%. Any suggestions?

 

 

Henrik Rinne

Best answer by david_r

Hi,

 

 

difficult to tell without knowing your workspace in detail, but some general tips are:

 

  • Remove as many attributes as possible, as early as possible in your workflow (AttributeKeeper is your friend)
  • Beware of large lists that are kept "indefinitely" (AttributeRemover is your friend)
  • Don't store geometries in an attribute, e.g. GeometryExtractor
  • Beware of blocking transformers, e.g. FeatureMergers, they fill up memory quickly
If you rely on a lot of FeatureMergers and the like, consider staging your processing by first loading everything into a proper database (SQLite or PostgreSQL are good and free alternatives) and then do joins on the database side using e.g. a SQLCreator rather than a csv reader. With proper indexing it is usually a lot faster and much more memory efficient.

 

 

David
This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

1 reply

david_r
Celebrity
  • Best Answer
  • October 14, 2014
Hi,

 

 

difficult to tell without knowing your workspace in detail, but some general tips are:

 

  • Remove as many attributes as possible, as early as possible in your workflow (AttributeKeeper is your friend)
  • Beware of large lists that are kept "indefinitely" (AttributeRemover is your friend)
  • Don't store geometries in an attribute, e.g. GeometryExtractor
  • Beware of blocking transformers, e.g. FeatureMergers, they fill up memory quickly
If you rely on a lot of FeatureMergers and the like, consider staging your processing by first loading everything into a proper database (SQLite or PostgreSQL are good and free alternatives) and then do joins on the database side using e.g. a SQLCreator rather than a csv reader. With proper indexing it is usually a lot faster and much more memory efficient.

 

 

David