1,399 karma · joined August 24, 2008
Not sure I agree with that - a big part of the excitement about 1.9 was how much faster it was, and stock Python isn't significantly faster than YARV. Didn't Python 3 actually come with a modest reduction in performance when it was released?
PyPy's certainly ahead quite a bit, but it still seems rather ignored by most.
> I hope Ruby MRI will one day get its own Google V8 / LuaJIT treatment.
Rubinius is a JITing LLVM-based Ruby VM with accurate compacting generational GC and no global interpreter lock. And of course there's the similarly capable JRuby, which leverages the JVM JIT quite heavily.
Here on Windows 8, their Silverlight player doesn't even start properly - it plays the first second or so, freezes, then jumps back to the first second again, repeatedly. The only workaround I've found is manually seeking to the first minute of the video.
And of course I have no alternative player. With Netflix I get a choice of (working) Silverlight and Metro, and most importantly it also works on all five of my Android devices. Amazon demonstrably do not execute it half as well from my perspective.
Ew, I didn't realise JS had them and implemented them like that. It's supposed to remind you of Perl, which probably made more sense 20 years ago.
> It get's confusing. And even as a local it is still bad. How is it that the =~ operator can assign local variables? Can other method calls do the same? If not, why not?
Actually, they're not locals, they're "virtual variables", going by the code. You can make your own using the C API - they just call back into a function:
rb_define_virtual_variable("$&", last_match_getter, 0);
Same way things like $LOADED_FEATURES, $_ and $SAFE get managed. It's probably just as well it's not exposed Ruby-side ;)Magic locals. You weren't actually unsure if they were global, right?
They're low priority in both languages. I use and see others using `and` and `or` all the time. In 15 years I can't say I've blown my foot off yet.
> Ruby: a = b ? c : d
If I'm really wanting a oneliner I'll tend to write
a = if b then c else d end
You can of course spread it across a few lines: a = if b
c
else
d
end
More typically it's constructs like: a ||= b
a = b if c
a = b unless c
> Ruby: "abc" =~ /[a-z]{3}/ /[a-z]{3}/.match("abc")
If you prefer.> FreeBSD-STABLE is the development branch from which major releases are made. Changes go into this branch at a different pace, and with the general assumption that they have first gone into FreeBSD-CURRENT for testing. This is still a development branch, however, and this means that at any given time, the sources for FreeBSD-STABLE may or may not be suitable for any particular purpose. It is simply another engineering development track, not a resource for end-users.
Prices for these start about 3x higher than other boards, their choice is extremely limited, and availability even more so :/
> By default, when the /i switch is not specified, the behavior that the system chooses depends on whether the volume resides on a mirrored space. On a mirrored space, integrity is enabled because we expect the benefits to significantly outweigh the costs.
Plus:
> When this option, known as “integrity streams,” is enabled, ReFS always writes the file changes to a location different from the original one. This allocate-on-write technique ensures that pre-existing data is not lost due to the new write
Windows has ReFS - http://en.wikipedia.org/wiki/ReFS
People sneer at me for being a stickler for it, but between 50GB of memory and 26TB of ZFS-protected storage, I see ECC corrections about as often as I see disk checksum errors - maybe half a dozen of each in the past year or two. Frankly I think it's idiotic it's not more common and better supported.
Seagates at least report their error correction rates via SMART, and make very obvious curves that show them scanning the heads across the disk surface gradually when idle.
Funny, my stance on analogue clocks is they have too little precision and require too much parsing. If I'm tired or stressed it can take me seconds to read one, while digits practically beam the numbers into my head simply through the act of glancing at them.
I do have to admit, though, most digital watches are monstrous things, with tiny displays to leave room for all the trademarks and other nonsense they feel the need to plaster everywhere. I seriously don't understand why they're almost universally awful.
I've literally flicked through thousands of them and found maybe 2 or 3 that didn't look completely awful. Do people seriously like watches where the manufacturer's name and various bits of other assorted useless text take up half the face?
No it isn't - both are roughly in the same ballpark. Even before YARV it wasn't anywhere near an order of magnitude in the general case.
Startup time is slow because it needs to warm up the JIT. Same with Rubinius, which is mysteriously missing from most of these graphs.
Memory consumption partially depends on how much you tell the JVM to use - it'll run the garbage collector more or less aggressively to keep within that bound - default appears to be min(system memory/4, 1GB).
That's not to say it doesn't need more memory than MRI, but you should factor in the concurrent native threads allowing one process to serve many clients, and the precise compacting GC limiting memory fragmentation and associated heap bloat with long-running processes.