Rico Mariani

blogs.msdn.microsoft.com/ricom · Personal blog · on HN since 2016

Rico Mariani, a longtime Microsoft performance engineer, writes about Visual Studio history, 64-bit tradeoffs and software performance.

What HN saysHN commenters cite his 64-bit Visual Studio posts when questioning whether 64-bit is always better, and link his follow-ups on the pro-64 argument.
21HN people shared it
19linked it in comments
3stories submitted
122story points
7 years agolast shared
2016people per year2026

Most-shared posts

  1. 1
  2. 2
    Visual studio why is there no 64 bit version yet
    5 people · first shared 2016
  3. 3
    64-bit Visual Studio – the “pro 64” argument
    4 people · 1 points · first shared 2017 · 1 comments on HN
  4. 4
    My History of Visual Studio – 2009
    2 people · 1 points · first shared 2019 · discussion on HN
  5. 5
    A little 64 bit follow up
    2 people · first shared 2017
  6. 6
  7. 7
    Mid life crisis
    1 people · first shared 2018
  8. 8
    Performance problems survery results
    1 people · first shared 2019
  9. 9
    Homepage
    1 people · first shared 2017

What HN people wrote when they linked it

mrec · 2017-08-15
Are there slam-dunk arguments why 64-bit is always better for applications? If so, I haven't seen them, and neither have various people I follow who seem to know what they're talking about. Example: https://blogs.msdn.microsoft.com/ricom/2016/01/11/a-little-64-bit-foll…
loarabia · 2017-03-10
I think he touched on this a little in a follow-up he did: https://blogs.msdn.microsoft.com/ricom/2016/01/04/64-bit-visual-studio… My interpretation of the shift from < 32 bits into 32 bits is: before we had do do crazy things to algorithms we used to fit in those address spaces. When we transitioned to 32 bits, we didn't have to do that anymore. So the question might be are there any surprising workarounds in the code because you're only dealing with 32 bit code where if you had 64 bits you could write some more elegant solution.
tpolm · 2017-03-10
2016 follow-up from the same "I regret I did this" person https://blogs.msdn.microsoft.com/ricom/2016/01/04/64-bit-visual-studio…
mumblemumble · 2019-10-24
For my part, I'm never interested in blanket comparisons of what language is faster, but it is worthwhile to mention specific features and how they impact performance. For example, in Python you can talk about the GIL and pointer chasing. But you can also talk about Cython. It turns out that, for me, Python's FFI is a really important factor, and a big reason why it's much easier for me to get good performance in Python than it is in Java: It makes it easy to interact with C libraries without taking a big hit on marshaling data in and out of Java's managed heap. (This is, incidentally, a major factor in Python having so thoroughly supplanted Java in the ML/BI/DS/analytics space.) But there are other situations where Java would be the clear winner. My favorite performance comparison between languages ever was the one that Raymond Chen and Rico Mariani did on implementing a practical program in C# and C++. [1] As it turns out that, at least as of 14 years ago, C++ is faster than C#, and C# is faster than C++, under different circumstances. You've really got to pay attention to which ones matter most to you before deciding where to place your bets, and just paying attention to rankings on The Computer Language Benchmarks Game is a sign that you've tried to jump to the answer without really taking enough time to understand the question. [1]: https://blogs.msdn.microsoft.com/ricom/2005/05/10/performance-quiz-6-c…
acqq · 2019-07-19
What you ignore is: "It was managed by an architecture astronaut that, as one is wont to do, rewrote existing mature libraries as header only template libraries that were buggy and untested (one could even say untestable)." I'd like here to quote this: https://blogs.msdn.microsoft.com/ricom/2007/02/08/performance-problems… "Which of the following is more likely the culprit of this crisis that has your boss in a panic: 1) A developer failed to code a good algorithm in some module and now a very smart person must come along and replace that module with something much better. 2) The project has far too many layers of abstraction and all that nice readable code turns out to be worthless crap that never had any hope of meeting the goals much less being worth maintaining over time." "Of 27 responses at this writing 8 didn't specify #1 or #2 at all or were balanced 4 went clearly for #1 15 went clearly for #2" I've had my own experiences of #2 on different occasions (I work for decades already).
eco · 2018-04-12
They've actually talked about why they haven't done this here[1]: "So why not just move Visual Studio to be a 64-bit application? While we’ve seriously considered this porting effort, at this time we don’t believe the returns merit the investment and resultant complexity. We’d still need to ship a 32-bit version of the product for various use cases, so adding a 64-bit version of the product would double the size of our test matrix. In addition, there is an ecosystem of thousands of extensions for Visual Studio (https://visualstudiogallery.msdn.microsoft.com) which would need to also port to 64-bit. Lastly, moving to 64-bit isn’t a panacea – as others have noted (https://blogs.msdn.microsoft.com/ricom/2016/01/11/a-little-64-bit-foll… unless the work doesn’t fit into a 32-bit address space, moving to 64-bit can actually degrade performance." Also, a lot of people don't realize that there is a 64-bit version of the toolsets[2] (for C++ at least). I don't tend to have high memory use by Visual Studio itself but often run out of heap space using the compiler and linker so having access to those can be very helpful. 1. https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/su… 2. https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visu…
barrkel · 2018-02-22
> Your argument against finalizers completely ignores that FFI is a thing Nope. Memory that is indirectly allocated via FFI is not normally[0] accounted for by GC memory pressure and so it should be managed explicitly, not using finalizers. That memory is invisible to the GC. It won't know to collect it. It won't know when the foreign heap has allocated too much, and it won't know to run a more expensive GC collection to try harder when foreign space gets tight. (If you have a relatively infinite amount of RAM, or your FFI object sizes are a constant factor of the size of their GC world counterparts and you account for this in your GC max heap size, you may get away with it. But these constraints aren't typical.) > That can often be non-trivial to figure out when to call close() on it exactly, and by the time you've written such a system you've just re-invented manual reference counting (error prone) or a garbage collector of some sort anyway, and should have just used a finalizer. You're right that it can be hard to figure these things out. But figure them out you must, for any long-lived program using scarce resources, or you're just creating a problem for the future. Working these things out is not actually rocket science. It's what we did in the days before GC, and it was actually tedious more than difficult, because the best way to do it meant dogmatically following certain idioms when programming, being rigorous in your error handling and consciously aware of…
josephg · 2016-11-14
I've spent the last 4 years doing development from a 2012 macbook air with 8 gigs of ram. Its been totally fine, except when I've got a million chrome tabs open. (Declaring bankrupcy and closing them all at once feels great though.) The posted article is about a mac version of visual studio. Coincidentally, visual studio only runs in 32 bit mode and hence can only make use of 4 gigs of ram total: https://blogs.msdn.microsoft.com/ricom/2015/12/29/revisiting-64-bit-ne… The article is worth reading. They (correctly) have kept asking "why does VS need more ram than that?" and just optimize the code when the footprint grows bigger. And I'm genuinely confused by all these people complaining about 16 gigs of ram not being enough. If you have a laptop today with 16 gigs of ram, have a look. Do you actually run out of ram while working? (And if so, what on earth are you running?). It looks like its genuinely hard to fill 16 gigs without chrome or slack running. Look at all the stuff you can fit in that much ram: https://www.zdziarski.com/blog/?p=6355 I'm also a big fan of pushing app developers to fix their cruft. Maybe in 2016 its not ok to have apps that suck up as much ram as possible. Maybe app developers shouldn't write super inefficient software just because next year we'll have bigger computers anyway. Maybe if you're writing software (any kind of software) that really does need more than 16 gigs of ram to work effectively you should fix…
golergka · 2019-11-06
Personally, I low how they used the name C# for two completely different languages (https://blogs.msdn.microsoft.com/ricom/2009/10/05/my-history-of-visual…
arsenide · 2019-10-09
Per a StackOverflow post, the reasons for this are detailed here: https://blogs.msdn.microsoft.com/ricom/2009/06/10/visual-studio-why-is… Is there some reason you would expect a 64-bit Visual Studio port before a Linux port?
antisemiotic · 2019-06-22
There are some reasons to keep software as 32bit, like these: https://blogs.msdn.microsoft.com/ricom/2009/06/10/visual-studio-why-is… (tl;dr - bigger pointers mean higher memory consumption, they don't want to break third-party plugins, and they're porting to managed anyway). Also, either I'm misunderstanding something, or Ubuntu is throwing the baby out with the washwater here. For example, Arch was always aggressive about not supporting anything but the typical desktop at the time of release, but the 32bit packages are still in a separate repo if anyone needs them.
scarface74 · 2018-11-02
Microsoft's semi-official stance on why VS isn't 64 bit... https://blogs.msdn.microsoft.com/ricom/2015/12/29/revisiting-64-bit-ne…
bunderbunder · 2018-04-12
It could have been all of those things, but the real reason was to keep Visual Studio fast. Here's a rather opinionated blog post on the subject, from one of the people originally responsible for making the call: https://blogs.msdn.microsoft.com/ricom/2015/12/29/revisiting-64-bit-ne… In a nutshell, his position was basically, "If you can't do what Visual Studio needs to do in 4GB (four gigabytes!) of RAM, you really need to think a little bit harder about your data management." I personally didn't have a terribly strong opinion either way, up until about a year ago when I switched to Java and started using IntelliJ on a daily basis. Now I have come to agree quite vehemently with Mariani's opinion on the subject.
imron · 2017-05-10
There are valid reasons for that [0]. Would you accept slower compile times and more memory usage just so you could have a 64-bit version of visual studio that your project probably wouldn't even need? 0: https://blogs.msdn.microsoft.com/ricom/2009/06/10/visual-studio-why-is…
shdon · 2017-04-21
I actually really like many of the blogs at Microsoft. It's a bit of a mixed bag, but there's some gems in there. Raymond Chen's blog[1] in particular was good enough to get me to buy his book (which definitely did not disappoint). Other ones I subscribe to are the Microsoft Edge Dev Blog[2] , Mark Russinovich[3] and Games for Windows and the DirectX SDK[4] And there's a few that have unfortunately not been updated for a long time, such as Larry Osterman[5], or have come to an end, such as Rico Mariani[6] [1] https://blogs.msdn.microsoft.com/oldnewthing/ [2] https://blogs.windows.com/msedgedev/ [3] https://blogs.technet.microsoft.com/markrussinovich/ [4] https://blogs.msdn.microsoft.com/chuckw/ [5] https://blogs.msdn.microsoft.com/larryosterman/ [6] https://blogs.msdn.microsoft.com/ricom/
pjmlp · 2016-07-11
Visual Studio is also a 32 bit application with no plans to ever upgrade to 64 bits unless forced otherwise. https://blogs.msdn.microsoft.com/ricom/2015/12/29/revisiting-64-bit-ne… Should the OSDev stop doing 64 bit support, just because the VS team doesn't want to upgrade their tools? The Office team is making use of WinRT. As for Windows 7, it might be the new XP, but this time Microsoft is bullying the move into the new WinRT world, so lets see how long it will be around.
douche · 2016-06-13
I would really like it if some games would take advantage of the gigs of RAM I have just sitting around unused. Why are you thrashing disk loading assets all the time, when there's 12 GB of pristine, untouched RAM available? Obviously, there's the x86/x64 divide there - hopefully nobody is buying new 32-bit systems anymore, and that limitation can go away - although I'd rather get a x64 version of Visual Studio, but apparently that's not a good idea, because reasons[1] [1] https://blogs.msdn.microsoft.com/ricom/2015/12/29/revisiting-64-bit-ne…
ethomson · 2016-10-14
Yes, this is exactly it. Calling git as a separate process clears up the cost of libgit2. And not just one copy of the library, since there are so many users of git within Visual Studio (Team Explorer, GitHub, CodeLens...) there are at least two copies of the library being loaded. (GitHub ships a newer version of libgit2 in VS prior to 15, intentionally. The Microsoft teams should use a single version, the one included with Team Explorer, but communication is hard.) By dropping libgit2, they freed up some memory. Obviously the overall memory usage of VS and `git` is probably _increased_ but VS teams are flogged until memory usage decreases because nobody will prioritize making it a 64 bit app. (Opposite, in fact: https://blogs.msdn.microsoft.com/ricom/2009/06/10/visual-studio-why-is… There's also the issue that Microsoft hired the maintainer of Git for Windows and lost a maintainer of libgit2. It's not an ideal situation for libgit2, we certainly liked our relationship with the VS team, but we understand and sympathize with their decision.
kingaillas · 2019-04-17
>See https://blog.codinghorror.com/on-managed-code-performance-ag... for example (alas, it appears some of the original source blogs are gone) They are there... it's just the recent migration at MSDN blogs broke a lot of links. Basically it looks like Rico doesn't blog anymore (no longer at Microsoft) so his blog is archived and links to it work, but Raymond Chen's blog is active and was moved en masse to new links. The links from Rico Mariani's blog (https://blogs.msdn.microsoft.com/ricom/2005/05/10/performance-quiz-6-c… are here: Raymond Chen's posts: https://devblogs.microsoft.com/oldnewthing/20050509-30/?p=35683 https://devblogs.microsoft.com/oldnewthing/20050510-55/?p=35673 https://devblogs.microsoft.com/oldnewthing/20050511-46/?p=35663 https://devblogs.microsoft.com/oldnewthing/20050513-26/?p=35643 https://devblogs.microsoft.com/oldnewthing/20050516-30/?p=35633 https://devblogs.microsoft.com/oldnewthing/20050518-42/?p=35613 https://devblogs.microsoft.com/oldnewthing/20050519-00/?p=35603

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close