Not to mention all the allocation that goes on in num::strconv :/ Some work on that could possibly result in a speed up.
I'm a fan of sticking with the fmt! style - it separates the data from the representation as opposed to mixing the two. But maybe I'm just an old fuddy-duddy. ~Brendan On 14/07/2013, at 1:08 PM, Patrick Walton <pwal...@mozilla.com> wrote: > Keep in mind that fmt!'s interface is misdesigned at the moment: with the > current interface the result is allocated on the heap even when the output is > destined for a file or the screen. This is one of the bugs that resulted in > poor performance (an order of magnitude slower than Python) on Chris Leary's > benchmark. Fixing this will probably require having something like writefln > or printfln. > > Jack Moffitt <j...@metajack.im> wrote: > I saw https://github.com/mozilla/rust/pull/7779 come up today and > commented on it. I got to thinking about it some, and since the bug > doesn't seem the right place for such discussion, I wanted to bring it > up here. > > The PR proposes to rename print!() and println!() to printf!() and > printfln!(). The original macros exist to replace uses of print() and > println() that look like: println(fmt!("blah blah %s", s)); > > Having a good default way to print things is very important, and it's > one of the first things people will see of the language. I think it's > worth bikeshedding it a bit to see if we can't come up with something > better than the status quo. > > I propose instead: > > 1) Do away with the formatting stuff as the default. print!() and > println!() sh > ould > just take a variable number of arguments, and each > one should be printed in its default string representation with a > space between each one. This is how Clojure's (and Python's?) print > and println work. > > This would change code like this: println!("The result is %f", foo); > to this: println!("The result is", foo) > > It's much easier. There are no formatting codes to remember and it > does exaclty what you want in most cases. Consider: println!(a, ,b, c, > "d=", d); This seems great for the standard printf-style debugging. > > If formatting is needed, it's easy to get to: > println!("My name is", name, "and I scored", fmt!("%0.2f", score)); > > 2) Since println!() is likely to be used the most often, I feel like > it should have a shorter name. Ie, we should call it just print!(), > and have a newline-less version with a different name, or perhaps a > different style of invocation of the macro. > > > As > some data to ponder, I went through the Servo code and all its dependencies: > > - The dependencies of servo use println 42 times, 24 of which also use > fmt!(). None of these need to use fmt!() at all, they could just use > the default string representation. > > - Servo itself uses println about 10 times, only two of which need > fmt!(). These two uses are both fancy formatted output for the > profiler. > > Changing all these uses to print!() in the codebase (aside from the > two profiler fmt!()s) would make things much nicer looking. > > jack. > > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev > > -- > Sent from my Android phone with K-9 Mail. Please excuse my brevity. > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev