Windows Dev Drive Benchmarks

Dev Drive was recently announced at Microsoft Build 2023:

Dev Drive is a new form of storage volume available to improve performance for key developer workloads.
Dev Drive builds on ReFS technology to employ targeted file system optimizations and provide more control over storage volume settings and security, including trust designation, antivirus configuration, and administrative control over what filters are attached.

Dev Drive can be set up from the new Dev Home:

Dev Home is a new control center for Windows providing the ability to monitor projects in your dashboard using customizable widgets, set up your dev environment by downloading apps, packages, or repositories, connect to your developer accounts and tools (such as GitHub), and create a Dev Drive for storage all in one place.

Or Dev Drive and optionally configured under Disks & volumes in Settings, and as either a virtual VHD drive or raw disk:

I wanted to put Dev Drive to the test on my developer machine, a Windows Developer Kit 2023, an Arm device, running the latest Windows Insider Dev Channel build.

Setup

Windows Developer Kit 2023
Qualcomm Snapdragon 8cx Gen 3
32GB LPDDR4x RAM
512GB NVMe
Windows NTFS C: Drive
Windows ReFS D: Drive created as a Dev Drive
BitLocker Enabled on C: and D:

Windows Environment

Windows 11 Dev Channel Build 23466.1001
Windows Terminal Preview 1.18
Visual Studio Community 2022 Preview
Dev Home Preview 0.137.141.0
PowerShell 7.3.4
Python 3.11

Building Flask on Windows

Flask is a Python web UI framework. This PowerShell script builds Flask on Windows from source and then runs all the build tests from the Flask repository.

I thought building a Python-heavy app natively on Windows would be a good starting point for comparison.

Work is done in the script to shift as much caching to the folder or parent folder on the drive the script is being run on, to minimize dev tooling's tendency to cache to C:

winget install python git.git --disable-interactivity #install Python

$sw = [Diagnostics.Stopwatch]::StartNew() #start timer

python -m pip cache purge #clean up global pip cache
Remove-Item -Recurse -Force $env:LOCALAPPDATA\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages #clean up local pip cache

python -m pip install --upgrade pip #upgrade pip
python -m pip install pipenv #install pipenv

Remove-Item -Recurse -Force flask #remove old repo
Remove-Item -Recurse -Force Pipfile* #remove old Pipfile
Remove-Item -Recurse -Force pipenvcache #remove old pipcache

md pipenvcache #create new pipcache folder
$env:PIPENV_CACHE_DIR = "$pwd\pipenvcache" #set cache folder for pipenv
$env:PIPENV_VENV_IN_PROJECT=1 #set pipenv to create virtual environment in this folder

git clone https://github.com/pallets/flask #clone repo
Set-Location flask
python -m pipenv install setuptools wheel
python -m pipenv install -r requirements/dev.txt #install flask dependencies
python -m pipenv install $pwd #install flask
python -m pipenv install -r requirements/tests.txt #install test dependencies
Get-ChildItem -Path . -Filter .\tests\*.py | ForEach-Object {python -m pipenv run python $_.FullName} #run tests
Set-Location ..

$sw.Stop() #stop timer

Write-Host $([string]::Format("`nšŸļøšŸƒšŸ’Ø Total time: {0:d2}:{1:d2}:{2:d2} ā±ļøšŸ“ŽšŸ†ļøšŸŽ‰",
                                  $sw.Elapsed.Hours,
                                  $sw.Elapsed.Minutes,
                                  $sw.Elapsed.Seconds)) -ForegroundColor Green

Write-Output $([string]::Format("Total time: {0:d2}:{1:d2}:{2:d2}",
                                  $sw.Elapsed.Hours,
                                  $sw.Elapsed.Minutes,
                                  $sw.Elapsed.Seconds)) | Out-File -FilePath .\flaskbuildtime.txt -Append

You can download my Flask build script here:

GitHub - sirredbeard/devdrive-benchmarking
Contribute to sirredbeard/devdrive-benchmarking development by creating an account on GitHub.

The results showed a 10% boost in compile and testing time of Flask when run on the Dev Drive, D:

Interesting result. I have some more benchmark scripts on the way.