Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I am developing a system with Windows 7 64-bit, Visual Studio and Sharepoint on a virtual workstation on some kind of VMWare server.

The system is painfully slow, with Visual Studio lagging behind when entering code, IntelliSense lagging, opening and saving files takes ages when compared to a normal budget laptop.

As far as I can see the virtual machine has OK specs and does not seem to be swapping etc., and the IT department also says that they can't see anything wrong when they're monitoring the system.

As long as the problem is not well-documented, the IT department and management does not want to throw money (=upgraded laptops) at us, so I need to show some sort of benchmark.

It has been many years since I did any system benchmarking, and I don't know the current benchmark software, so my question is which benchmark will be most relevant for Visual Studio performance? Not just for compiling fast, but also to reflect the "responsiveness" of the system.

share|improve this question
    
Thanks for your comments. I don't have much info on the VM host, and the specs and setup of the host don't really matter to me, as I'm not in a position to suggest changes to that. My task is to supply IT and management with some documentation or information on exactly what it means when the developers say that the "systems are slow as molasses". A benchmark that would run on the VM guest and on a physical PC would give an indication on the size of the performance gap. I guess I'll just time a scripted round of Visual Studio work then, but it won't say much about the "responsiveness". –  Kenned Mar 12 '10 at 9:27

2 Answers 2

Disk's operations are huge impact on Visual Studio performance.

Try benchmarks for HDD.

share|improve this answer
    
Disk I/O has always been the killer for our developers using VMs. Do you ahve more info on what exactly hosts the VM? VMware version, hardware config, etc. –  Dave M Mar 10 '10 at 14:32
up vote 1 down vote accepted

In case anyone (besides me) didn't know how to do this, I'll post my powershell script that does a timed run of a "round of work" using Visual Studio.

  1. TFS create temporary workspace
  2. TFS get latest solution directory
  3. TFS check out file and undo checked out file
  4. rebuild solution (msbuild)
  5. run unit tests from specified dll (mstest)
  6. delete files and workspace
  7. write output of work to console
  8. write number of seconds spent doing the first 5 steps

Cheers, user30715

    ## Change to fit your environment ##
    $BASEDIR="C:\temp\test\"              # Where to store the temporary files
    $TFS_SERVER="http://mytfs.srv:8080"   # TFS server 
    $TFS_PROJECT_DIR="$/Path/To/My/Solution/Directory"   # Path to solution dir on TFS
    $SLNFILE="My.App.sln"      # Path to solution file (relative to TFS_PROJECT_DIR)
    $UNIT_TEST_DLL="Relative/Path/To/My.App.Test.dll"    # Path to unit test dll (relative)
    ####################################

    $TSTAMP=get-date -Format yyyy-MM-dd_HH-mm-ss
    $TESTNAME="tfstest." + $TSTAMP
    $WORKDIR=$BASEDIR + $TESTNAME
    $LOG=$BASEDIR + $TESTNAME + ".log"

    function Log()
    {
        $input | write-host
    }

    function DoWork() 
    {
        write-host "Getting source from TFS"
        mkdir $WORKDIR
        pushd $WORKDIR
        tf workspace /new /noprompt /server:$TFS_SERVER $TESTNAME 
        tf workfold /map /server:$TFS_SERVER /workspace:$TESTNAME $TFS_PROJECT_DIR $WORKDIR
        tf get /recursive /force /noprompt $TFS_PROJECT_DIR
        write-host "Checking out file $SLNFILE" 
        tf checkout $SLNFILE
        write-host "Undoing checkout"
        tf undo /noprompt $SLNFILE 
        write-host "Starting build process"
        msbuild $SLNFILE /target:rebuild 
        write-host "Running tests"
        mstest /testcontainer:"$UNIT_TEST_DLL" 
        popd
    }

    function CleanUp()
    {
        write-host "Cleaning up mess"
        pushd $BASEDIR
        tf workfold /unmap /workspace:$TESTNAME $WORKDIR
        tf workspace /delete /noprompt $TESTNAME
        rmdir -recurse -force $WORKDIR
        popd
    }

    $VSTIME=(measure-command { DoWork 2>&1 | Log }).TotalSeconds
    CleanUp 

    write-host "Spent $VSTIME seconds doing work"
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.