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

Reply via email to