Register to reply 
Mathematica  Show timing in output line 
Share this thread: 
#1
Oct1410, 05:09 PM

PF Gold
P: 469

While I know there exists:
In[1]:= Timing[Integrate[blah]] Out[1]:= {result,time it took to calculate} Is there a way to just have the time it took to process a step appear in the Out[1]:= part, or after every step rather than having to use the Timing function and then pull out the index? If I say Result = Timing[process][[1]] then I get the result but don't see the timing, I'd have to put the Timing[xxx][[2]] after everything, and this is tedious. Can I customize the output lines to include this? 


#2
Oct1410, 07:53 PM

P: 313

The Timing function actually returns the result in the other order
In[1]:= Timing[Integrate[blah]] Out[1]:= {time, result} where time is the process time of the kernel. If you want to just suppress the result then you could use In[1]:= Timing[Integrate[blah];] Out[1]:= {time, Null} If you don't want to have to type Timing every time, then there's a couple of options. 1) You could set the variable $Pre to $Pre = Timing or $Pre = Timing[#][[1]] & (* just print timing, never the result *) 2) Go to the Option Inspector (ShiftCtrlO), Notebook Options > Evaluation Options > EvaluationCompletionAction and choose either ShowTiming and/or AddTimeStamp. ShowTiming only shows the timing in the StatusArea  it's not permanent. 3) What you really wanted was to change the CellLabels for Output cells. I'm not sure how to do this. I think that this is neither a Notebook option nor a StyleSheet option. It must be in another configuration location. (nb you can turn off the In/Out labels in the Preferences). Maybe using $Pre and $Post you could hack a way of modifying the Output CellLabel as it's generated. Look at the example in the CellLabel documentation. I hope something there helps! 


#3
Oct1410, 08:40 PM

PF Gold
P: 469

Thanks! Screwing around with it I did:
Clear[$Pre]; Clear[$Post]; Clear[$Pre]; Clear[$Post]; Evaluation::Timing = "Process took `1` seconds to complete."; $Pre = Timing; $Post = (Message[Evaluation::Timing, #[[1]]]; #[[2]]) &; (The first things are just from debugging and having to clear stuff up) This makes a message after everything you output with the time it took to run. Now I just add this to the initialization stuff I have in every notebook and I'm good to go! Thanks for the ideas. 


#4
Oct1410, 08:46 PM

PF Gold
P: 469

Mathematica  Show timing in output line
actually, while that works it gets real ugly later. I just made instead:
Evaluation::Timing = "Process took `1` seconds to complete."; Timeit[x_] := (Message[Evaluation::Timing, Timing[x][[1]]]; Timing[x][[2]]) To use instead of Timing, this puts the time it took into a message while still giving me my output, though I wonder if it is evaluating twice... 


#5
Oct1410, 09:27 PM

P: 313

I don't think that your Timeit is working.
The inside expression gets evaluated before Timeit is called  so it always say that the time taken is 0. Evaluation::Timing = "Process took `1` seconds to complete."; Timeit[x_] := With[{t = Timing[x]}, (Message[Evaluation::Timing, t[[1]]]; t[[2]])] SetAttributes[Timeit, HoldAll] $Pre = Timeit; This seems to work like a charm. Although I'd still like to have a way of using the CellLabel option rather than using a Message. 


#6
Oct1510, 03:40 PM

PF Gold
P: 469

I think I got it, but still working out some formatting stuff:
Integrate[Sin[x] Exp[x/5] x^2/(1  5 x), {x, 43, 434652.532}] does it work? 


#7
Oct1510, 03:41 PM

PF Gold
P: 469

but if you call the previous result with "%" it's not the output but the full thing... hmm.
\!\(\* TagBox[ FormBox[ RowBox[{"Cell", "[", RowBox[{ RowBox[{"BoxData", "[", RowBox[{"TagBox", "[", RowBox[{ RowBox[{"FormBox", "[", RowBox[{ RowBox[{"RowBox", "[", RowBox[{"{", RowBox[{ RowBox[{"RowBox", "[", RowBox[{"{", RowBox[{"\<\"\"\>", ",", "\<\"0.0006293585747159831`\"\>"}], "}"}], "]"}], ",", "\<\"+\"\>", ",", RowBox[{"RowBox", "[", RowBox[{"{", RowBox[{"\<\"0.`\"\>", ",", "\<\" \"\>", ",", "\<\"\[ImaginaryI]\"\>"}], "}"}], "]"}]}], "}"}], "]"}], ",", "StandardForm"}], "]"}], ",", "StandardForm", ",", RowBox[{"Editable", ">", "True"}]}], "]"}], "]"}], ",", "\<\"Output\"\>", ",", RowBox[{"CellLabel", ">", "\<\"(7.02)Out[4]:=\"\>"}]}], "]"}], StandardForm], StandardForm, Editable>True]\) 


#8
Oct1510, 04:50 PM

P: 313

Nice work!
OK... this is getting a bit hackish. But if you use the following then % (Out) works ok and you don't get Null's being printed when there is not meant to be an output.
You can fix this by modifying the StyleSheet (copy the Output style from Core.nb into the notebook's stylesheet) so that the Output cells now have



#9
Oct1510, 07:21 PM

P: 313

By the way, I've turned this into a stackoverflow question:
http://stackoverflow.com/q/3938827/421225 


#10
Nov1110, 03:51 PM

P: 313

Just for the sake of completeness, here's an updated version that plays nicer with the various $OutputForms:



Register to reply 
Related Discussions  
[mathematica] problem with the output  Math & Science Software  2  
Mathematica Output Display  Math & Science Software  4  
Mathematica: Function output to array  Math & Science Software  1  
Mathematica showing strange output for elliptic integral  Calculus & Beyond Homework  1  
Testing mathematica TeX output in PF  Math & Science Software  11 