Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

questionwonder

macrumors regular
Original poster
May 6, 2013
177
30
What would be the best machine for me!?
Currently I have a mid 2013 Macbook Air with 2Gz, 8Gb RAM.
This is my main development machine, where I use VMWare and Visual Studio 2017 RC (just installed it) on Windows 10.
They both run a little slow sometimes, especially if I load up lots of Chrome windows and I start running out of memory. I'm currently testing Visual Studio 2017 RC to see if the performance improvements make any difference.

I know I don't need a heavy dedicated graphics processor, so the top of the line 15' Pro is too much. But, is a 15' going to give me a better development experience then the 13'?

I don't want to run Bootcamp, I want to keep my environment just like it is with a VM running Win 10 and using VS inside it to develop.

In addition to this I currently have a 22' Samsung 1080P hooked up to my Macbook Air and wanted to upgrade to a better 4K monitor, so I would have 2 monitors (1 nice 4K and my 22' Samsung monitor) side by side plus my Macbook screen as a third screen. The 13' shouldn't have any problem with this setup right?
 
You're probably best off with a 15" due to the quad-core CPU. Compiling code is supposed to leverage multiple cores quite well. Having 4 cores will allow you to allocate 2 to a guest VM without severely impacting performance of the host machine.

Trying to do the same thing on a 13" is not recommended, since the host only has 2 physical cores. Trying to run a 2 vCPU VM on a dual core host can cause contention issues with the CPU.
 
You're probably best off with a 15" due to the quad-core CPU. Compiling code is supposed to leverage multiple cores quite well. Having 4 cores will allow you to allocate 2 to a guest VM without severely impacting performance of the host machine.

Trying to do the same thing on a 13" is not recommended, since the host only has 2 physical cores. Trying to run a 2 vCPU VM on a dual core host can cause contention issues with the CPU.

Well, each vCPU (in VMWare) maps to a single hardware thread on the CPU, and you have 4 of those in a dual-core machine. So you could allocated 2 vCPUs (1 CPU core) to the VM and still have one for the host machine. In my experience 2 vCPUs for a Windows VM seems to work well. I would however suggest getting 16GB RAM because it is RAM starvation that really kills VMs, followed by disk speed with CPU power as the last important factor for most tasks.
 
  • Like
Reactions: c0ppo and Falcon80
Well, each vCPU (in VMWare) maps to a single hardware thread on the CPU, and you have 4 of those in a dual-core machine. So you could allocated 2 vCPUs (1 CPU core) to the VM and still have one for the host machine. In my experience 2 vCPUs for a Windows VM seems to work well. I would however suggest getting 16GB RAM because it is RAM starvation that really kills VMs, followed by disk speed with CPU power as the last important factor for most tasks.

In my (data centre) experience, Hyperthreading is not that useful when it comes to VM workloads.

http://wahlnetwork.com/2013/09/30/hyper-threading-gotcha-virtual-machine-vcpu-sizing/
https://kb.vmware.com/selfservice/m...nguage=en_US&cmd=displayKC&externalId=1015676

In a nutshell, it's probably best to stick to 1 vCPU for guest VMs on a dual-core host, and 2 vCPU for a quad-core host.
 
If you need to connect to 2 monitors, perhaps it will be better to have better GPU of the 15".
 
In my (data centre) experience, Hyperthreading is not that useful when it comes to VM workloads.

http://wahlnetwork.com/2013/09/30/hyper-threading-gotcha-virtual-machine-vcpu-sizing/
https://kb.vmware.com/selfservice/m...nguage=en_US&cmd=displayKC&externalId=1015676

In a nutshell, it's probably best to stick to 1 vCPU for guest VMs on a dual-core host, and 2 vCPU for a quad-core host.

Interesting links - thanks! I would certainly agree that creating a single VM with more vCPUs than you have physical cores is probably sub-optimal because scheduling and performance are likely to suffer once a VM uses multiple threads on a single core. That said, allowing 2 threads for the host and 2 threads for a 2 vCPU VM on a 2-core machine is probably going to OK. I haven't done a study of actual performance, "CPU Ready %" to prove this, but quite often the host requirements are relatively small. This is especially so in the case of ESXi or other Type 1 hypervisors.

I try to keep my Mac OS apps usage to a minimum when I'm running VMWare just to avoid contention as much as possible.
 
so right now I have the VM configured to use 2 cores. Should I re configure it to use 1 core, would that help? These are physical cores not virtual cores. I don't think VM Fusion gives me the option to allocate virtual cores. I think the main issue I'm having is with the CPU draw. The VM will hit at over 100% CPU when I have it running Visual Studio. This happens 3-4 times during a 6-8 hour work period. I'll watch the mac activity monitor and see the VM hitting at like 125%, then the fan kicks on for a couple of minutes. Also, I keep the running MAc apps to almost nothing, just a few Chrome windows are open and just visual studio in my VM are running, nothing else in windows is running. I just switched over to Visual Studio 2017 RC and it seems to be a little better (the fan doesn't kick on as much and the CPU doesn't hit > 100% as much). But I am noticing that Visual Studio gets sluggish and freezes up more often then Visual Studio 2015. Maybe this is a just a RC release bug that will be worked out before they do the final push to consumers?
 
1) You can do dev work on any of the machines, even a MacBook Air is sufficient, as is the 12" Macbook
2) I would advise you to select one of the more portable/long life machines as they will add most value to development sessions, compared to slightly faster compile times by having a quad core machine
3) Laptops with dGPU's (e.g. 2016 MBP 15"), have pretty bad battery life when dGPU is utilised, and many programs just randomly turn this on, even non-graphic intensive programs. I would imagine it is even more problematic when running VM's.
4) Touch-bar is very useless for coding/programming
5) 13" Touch-bar model has much less battery capabilities than non-touch

As a result I would buy (in order of personal preference):

- 2016 13" non-touch rMBP
- 2015 13" rMBP / 13" Macbook Air
- 12" Rmb

I work as a Database engineer a long with my colleagues and we use Windows machines with dual core CPU's and 8GB ram and work with multi-million row databases (laptops docked to monitors, due to mobility requirements of my organisation). I don't believe you actually need 16 GB ram or quad core for whatever you may be doing. But then, running Windows applications on Parallels might be the bottleneck here - and I am not sure how much better it will get with a better processor, as even the quad core option is still a 45w option (not desktop level 90+w). I do remember getting lag/stuttering on my 2014 rMBP 15" when running Windows as a VM too.
 
  • Like
Reactions: Falcon80
I used to have a 2011 dual core 13 inch and upgraded to the 2015 15". The difference was night and day when running Parallels and VS 2015. The older system had a SSD and 16GB or memory and still felt like it was laboring. With the 15" quad core things are much more responsive. Intellisense works about as well as on a native Windows system. And C# seems to run at 95% of a native system.
 
  • Like
Reactions: Falcon80
1) You can do dev work on any of the machines, even a MacBook Air is sufficient, as is the 12" Macbook
2) I would advise you to select one of the more portable/long life machines as they will add most value to development sessions, compared to slightly faster compile times by having a quad core machine
3) Laptops with dGPU's (e.g. 2016 MBP 15"), have pretty bad battery life when dGPU is utilised, and many programs just randomly turn this on, even non-graphic intensive programs. I would imagine it is even more problematic when running VM's.
4) Touch-bar is very useless for coding/programming
5) 13" Touch-bar model has much less battery capabilities than non-touch

As a result I would buy (in order of personal preference):

- 2016 13" non-touch rMBP
- 2015 13" rMBP / 13" Macbook Air
- 12" Rmb

I work as a Database engineer a long with my colleagues and we use Windows machines with dual core CPU's and 8GB ram and work with multi-million row databases (laptops docked to monitors, due to mobility requirements of my organisation). I don't believe you actually need 16 GB ram or quad core for whatever you may be doing. But then, running Windows applications on Parallels might be the bottleneck here - and I am not sure how much better it will get with a better processor, as even the quad core option is still a 45w option (not desktop level 90+w). I do remember getting lag/stuttering on my 2014 rMBP 15" when running Windows as a VM too.
Would you recommend a windows laptop instead for someone looking to learn programming and possibly make it a living someday?
 
I don't want to run Bootcamp, I want to keep my environment just like it is with a VM running Win 10 and using VS inside it to develop.

FYI, some VM solutions like Parallels support virtualizing your Bootcamp install, so it gives you the option of running side-by-side with OSX (when you need a quick, less performance oriented instance) or starting in BC for the most optimized windows performance. Sometimes I'm back and forth between OSX and Windows, sometimes I like to commit to a "windows only" stint (with nice multi-display support, etc.)
 
  • Like
Reactions: Falcon80
Would you recommend a windows laptop instead for someone looking to learn programming and possibly make it a living someday?

I wouldn't recommend an OS per say, go with the laptop and OS which you feel most comfortable using. You can make money on either OS just fine, most people who struggle to learn programming was due to lack of motivation or enjoyment, not because the laptop or computer wasn't up to scratch. Truth is you need so little to learn and even develop - so get something you'd enjoy using and forget specs.

If you are going to be mainly using Windows programs and you are comfortable with Windows, it might make sense to go Windows, not that you have to of course. Sometimes people read too much into OS X/Linux being better for programming due to built in Unix shell etc - but truthfully that doesn't matter for learning programming or making money with it. Don't think too deeply into it.

Just get a machine with good battery life and that you are comfortable using. That's it!

If I had to recommend students "premium" laptops who have a decent budget, get either the non-touch rMBP/MB Air, or a FHD XPS 13/Kabylake Spectre x360/Lenovo 910.

But you can both learn and develop on what people refer to as £300 plastic crap laptops.

If you ever want to develop iOS apps, that is the only time I'd recommend that you should go for Apple over Windows as your OS even if you prefer Windows, although there are Hackintosh options.
 
1) You can do dev work on any of the machines, even a MacBook Air is sufficient, as is the 12" Macbook
2) I would advise you to select one of the more portable/long life machines as they will add most value to development sessions, compared to slightly faster compile times by having a quad core machine
3) Laptops with dGPU's (e.g. 2016 MBP 15"), have pretty bad battery life when dGPU is utilised, and many programs just randomly turn this on, even non-graphic intensive programs. I would imagine it is even more problematic when running VM's.
4) Touch-bar is very useless for coding/programming
5) 13" Touch-bar model has much less battery capabilities than non-touch

As a result I would buy (in order of personal preference):

- 2016 13" non-touch rMBP
- 2015 13" rMBP / 13" Macbook Air
- 12" Rmb

I work as a Database engineer a long with my colleagues and we use Windows machines with dual core CPU's and 8GB ram and work with multi-million row databases (laptops docked to monitors, due to mobility requirements of my organisation). I don't believe you actually need 16 GB ram or quad core for whatever you may be doing. But then, running Windows applications on Parallels might be the bottleneck here - and I am not sure how much better it will get with a better processor, as even the quad core option is still a 45w option (not desktop level 90+w). I do remember getting lag/stuttering on my 2014 rMBP 15" when running Windows as a VM too.

How about the screen size? I think that it is an important consideration too especially when doing development in Xcode and you have a complicated/huge storyboard to deal with.
 
Would you recommend a windows laptop instead for someone looking to learn programming and possibly make it a living someday?

I would strongly recommend learning a non-windows development stack first. Either get a mac and learn how to use the shell, or get a thinkpad and run linux, it doesn't matter. Pick a language that is not tied to a specific OS and get coding.

Lots of .NET/Windows devs end up with a crippling dependence on GUI tools (windows/visual studio/etc) and they have a very hard time adapting to other tech stacks. I have never seen it happen the other way. In other words, devs who are proficient with linux and command line work can easily navigate a windows GUI.

I say this as someone who runs a startup with a product based on the .NET stack. I do all my .NET development in a windows 10 VM, but I basically hate running windows, especially for production infrastructure. I can't wait until our app can build and run on .NET core and I can leave the windows VM behind.
 
How about the screen size? I think that it is an important consideration too especially when doing development in Xcode and you have a complicated/huge storyboard to deal with.

Truth is having used both 13" and 15", neither is truly ideal. The slight improvement on the 15" is hindered usually by the fact that you lose probability and sometimes I find typing on a smaller and lighter laptop more comfortable. Oh and, the smaller laptops are usually far more quiet and that is such a nice addition that people take for granted - It is probably the reason why I like Core-M laptops so much with their fanless designs...

You'd probably be using external monitors if you need screen estate - and possibly an external keyboard / mouse if productivity is important.

I did find though, the 16:10 aspect ratio does help make the 13" Apple laptops more easier to code on, compared to the traditional 16:9 found on every other laptop (with the exception of 3:2 aspect ratio Surface lineup - I think if they had released a Surface Book 2 rather than a mild spec bump, I might have been swayed to go Microsoft).
 
  • Like
Reactions: Altis and Falcon80
How about the screen size? I think that it is an important consideration too especially when doing development in Xcode and you have a complicated/huge storyboard to deal with.

Development (& most other tasks) is easier with an external monitor, which also provides better ergonomics and less neck strain than using a laptop screen. Many devs have mutliple screens, so if this sounds attractive choose a laptop that can comfortably run two external monitors at your chosen resolution. All of the MBPs will run 2 x 4K monitors.

If you are limited to a mobile solution, then the 15" provides considerably more screen real estate, and is, IMO, a more comfortable machine to develop on.
[doublepost=1480633886][/doublepost]
so right now I have the VM configured to use 2 cores. Should I re configure it to use 1 core, would that help? These are physical cores not virtual cores. I don't think VM Fusion gives me the option to allocate virtual cores.

Are you sure about the physical cores? AFAIK, VMWare always allocates vCPUs to virtual cores, i.e. CPU hardware threads. Have a look at "processors and memory" setting in your VM settings (on a shutdown VM). The number of cores available will be the total number of virtual cores, not physical ones. On my 4-core MBP I can allocate up to 8 cores, i.e. 4 hyper-threaded cores.
 
  • Like
Reactions: Falcon80
Would you recommend a windows laptop instead for someone looking to learn programming and possibly make it a living someday?


depends on your current and future goals. If only staying windows...sure.

Mac OS gives some flexibility if not going for more focused say .net framework application development. You can test how stuff more universal (ruby, python, java, etc) will run on Mac OS not resorting to hackintosh if your stuff may run on that one day.

Mac OS also has that nice BSD core that can be used to test no Linux VM needed (right away, always test when "done") as well to get close to what you'd see with Linux if the coding is more CLI based. Close as in at some point you may hit those small variances between Debian (variants) or RH(variants). But at that point you know the code works...its just dealing with Ubuntu or CentOS having their well I do it this way at that point.
 
Truth is having used both 13" and 15", neither is truly ideal. The slight improvement on the 15" is hindered usually by the fact that you lose probability and sometimes I find typing on a smaller and lighter laptop more comfortable. Oh and, the smaller laptops are usually far more quiet and that is such a nice addition that people take for granted - It is probably the reason why I like Core-M laptops so much with their fanless designs...

You'd probably be using external monitors if you need screen estate - and possibly an external keyboard / mouse if productivity is important.

I did find though, the 16:10 aspect ratio does help make the 13" Apple laptops more easier to code on, compared to the traditional 16:9 found on every other laptop (with the exception of 3:2 aspect ratio Surface lineup - I think if they had released a Surface Book 2 rather than a mild spec bump, I might have been swayed to go Microsoft).

Thanks for the input. Unfortunately, most of the time I do not have a permanent work desk thus hooking it up to an external monitor is not an option. I am currently using the 13" Macbook Air and it can be real pain working on storyboard (multiple screens workflow).
 
I would strongly recommend learning a non-windows development stack first. Either get a mac and learn how to use the shell, or get a thinkpad and run linux, it doesn't matter. Pick a language that is not tied to a specific OS and get coding.

Solid advice, and honestly, even _if_ you wind up with a Winders© machine, you (the OP) should still explore some non-Windows specific languages/frameworks/stacks. Python, NodeJS, Ruby (and their web frameworks), install and learn Git, use a text editor, get familiar with client code frameworks (Angular, Ember, React), while the command line will differ from Linux/OSX/*NIX, most of the core coding skills will be transferrable.

You'd probably be using external monitors if you need screen estate - and possibly an external keyboard / mouse if productivity is important.

Yep, even with high PPI displays, nothing beats a large display, and even better more than one. I'd say my rMBP 15" spends 95% of its time "docked", full sized Apple KB (must have inverted T :D ), a mouse, two large displays, and running the BID as a 3rd monitor, usually with term windows, etc.
 
I personally would get a 15in. While the dependency tree of your projects will determine order of compilation, they can run on multiple processors if able to and it's configured in the ide. Unit tests will run in parallel if you have it set that way. More importantly, code completion, background compilation, static code analysis, etc are all running in the background and provide an enhanced development experience. Visual Studio is this manner is quite heavy and having horse power in the cpu and at least two cores it can schedule on would make for a better experience. 16 gigs of ram is essential. I really wanted 32 gigs for this last update because I've been on the wall of 16 for the last 2 years. Just turning my machine on and opening my normal apps i'm at 14 gigs. The disk of the new machine is really fast so that makes up for it a little. Here is the cpuz benchmark inside of the virtual machine (parallels windows 10) on the 2.9 ghz version of the macbook pro 2016.

upload_2016-12-1_20-32-19.png



upload_2016-12-1_20-31-51.png
 

Attachments

  • upload_2016-12-1_20-30-56.png
    upload_2016-12-1_20-30-56.png
    64.3 KB · Views: 210
  • Like
Reactions: Falcon80
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.