MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Memory leak in StringSplit in Mathematica 7

  • To: mathgroup at smc.vnet.net
  • Subject: [mg97307] Re: [mg97255] Memory leak in StringSplit in Mathematica 7
  • From: Curtis Osterhoudt <cfo at lanl.gov>
  • Date: Tue, 10 Mar 2009 05:37:37 -0500 (EST)
  • Organization: LANL
  • References: <200903090606.BAA09399@smc.vnet.net>
  • Reply-to: cfo at lanl.gov

Confirmed: the same thing here in V. 7 for linux.



On Monday 09 March 2009 12:06:19 am Scott Morrison wrote:
> I'm on OSX 10.5, running Mathematica 7. There's apparently a memory leak in
> StringSplit -- 16 bytes get used up every call. See below for a "by
> hand" implementation of StringSplit, and two test runs showing the
> difference.
> 
> The problem had caused big problems; a long run of one of my programs
> was mysteriously starting to page memory unnecessarily, and switching
> to the "by hand" implementation fixes the problem.
> 
> In[135]:= StringSplitWithoutMemoryLeak[S_,V_]:=StringTake[S,#]&/
> @Partition[{1}~Join~Flatten[#+{-1,1}&/@StringPosition[S,V]]~Join~{-1},
> 2]
> In[145]:= StringSplitWithoutMemoryLeak["12341234","2"]==StringSplit
> ["12341234","2"]
> Out[145]= True
> In[137]:= randomString:=StringJoin@@RandomChoice[{"0,","1","2"},10]
> In[143]:= Do[Print["Memory in use: ",MemoryInUse[]];Print["Time for
> 100000 StringSplits: ",AbsoluteTiming[Do[StringSplit[randomString,"0"],
> {100000}]][[1]]],{4}]
> During evaluation of In[143]:= Memory in use: 130297096
> During evaluation of In[143]:= Time for 100000 StringSplits: 1.312322
> During evaluation of In[143]:= Memory in use: 131897496
> During evaluation of In[143]:= Time for 100000 StringSplits: 1.345231
> During evaluation of In[143]:= Memory in use: 133497496
> During evaluation of In[143]:= Time for 100000 StringSplits: 1.314813
> During evaluation of In[143]:= Memory in use: 135097496
> During evaluation of In[143]:= Time for 100000 StringSplits: 1.403105
> In[144]:= Do[Print["Memory in use: ",MemoryInUse[]];Print["Time for
> 100000 StringSplits: ",AbsoluteTiming[Do[StringSplitWithoutMemoryLeak
> [randomString,"0"],{100000}]][[1]]],{4}]
> During evaluation of In[144]:= Memory in use: 136701120
> During evaluation of In[144]:= Time for 100000 StringSplits: 3.918605
> During evaluation of In[144]:= Memory in use: 136701480
> During evaluation of In[144]:= Time for 100000 StringSplits: 3.948706
> During evaluation of In[144]:= Memory in use: 136701480
> During evaluation of In[144]:= Time for 100000 StringSplits: 3.952957
> During evaluation of In[144]:= Memory in use: 136701480
> During evaluation of In[144]:= Time for 100000 StringSplits: 3.916070
> 
> 



-- 
==========================================================
Curtis Osterhoudt
cfo at remove_this.lanl.and_this.gov
PGP Key ID: 0x4DCA2A10
Please avoid sending me Word or PowerPoint attachments
See http://www.gnu.org/philosophy/no-word-attachments.html
==========================================================


  • Prev by Date: Re: Notebook that auto-executes when opened?
  • Next by Date: Re: Re: Re: Re: Re: typsetting bug still present in
  • Previous by thread: Re: Memory leak in StringSplit in Mathematica 7
  • Next by thread: Re: Memory leak in StringSplit in Mathematica 7