Exporting and importing arbitrary expressions efficiently
- To: mathgroup at smc.vnet.net
- Subject: [mg60048] Exporting and importing arbitrary expressions efficiently
- From: "J. McKenzie Alexander" <jalex at lse.ac.uk>
- Date: Tue, 30 Aug 2005 04:43:06 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Mathematica 5.1 says it has highly optimized import and export of binary data, plus automated encoding and decoding of .gz files. If I have Mathematica-generated data that consists of complex lists of (effectively) arbitrary expressions, what is the best way to save this to a data file and read that data file back in later? The best solution I've found for *exporting* is to use Export, saving to a .m.gz file. For example, > In[1]:= > <<DiscreteMath`Combinatorica` > > In[2]:= > Timing[ > Export["~/filetest.m.gz", > Table[{RandomGraph[10,.3],Table[Random[],{25}]},{1000}] > ] > ] > > Out[2]= > {2.63919 Second,~/filetest.m.gz} I don't know if that's the highly optimized export that was touted, but it's certainly perfectly fine. But what's the "highly optimized" way to *import* this data? Using Import is painfully slow. For example, > In[3]:= > Timing[ > data=Import["~/filetest.m.gz"]; > ] > > Out[3]= > {41.3851 Second,Null} If I gunzip the file by hand, Get pulls the file in about 80 times *faster* than import. > In[4]:= > Timing[ > data1=Get["~/filetest.m"]; > ] > > Out[4]= > {0.500501 Second,Null} Granted, Get doesn't have to gunzip the file, but there's no way that should take so long. Timing gunzip on the same file from the command line says it takes only a fraction of a second: > evolve: ~ > $time gunzip filetest.m.gz > > real 0m0.049s > user 0m0.025s > sys 0m0.015s Any pointers on what I'm doing wrong would be appreciated. I'm running v 5.1 on Mac OS X 10.4. Cheers, Jason -- J. McKenzie Alexander Department of Philosophy, Logic and Scientific Method London School of Economics and Political Science Houghton Street, London WC2A 2AE