FastFind.Windows 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package FastFind.Windows --version 1.1.0
                    
NuGet\Install-Package FastFind.Windows -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastFind.Windows" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FastFind.Windows" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="FastFind.Windows" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FastFind.Windows --version 1.1.0
                    
#r "nuget: FastFind.Windows, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FastFind.Windows@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FastFind.Windows&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=FastFind.Windows&version=1.1.0
                    
Install as a Cake Tool

FastFind.NET

Ultra-high performance cross-platform file search library for .NET 10

License .NET Build Status

Packages

Package Version Description
FastFind.Core NuGet Core interfaces and models
FastFind.Windows NuGet Windows-optimized with MFT & USN Journal
FastFind.Unix NuGet Linux/macOS with parallel enumeration & inotify
FastFind.SQLite NuGet SQLite persistence with FTS5 search

Key Features

  • Cross-Platform SIMD: Vector256/Vector128 auto-dispatch (AVX2, SSE2, NEON) — 1.87M ops/sec
  • MFT Direct Access (Windows): 31K+ files/sec NTFS enumeration (30x faster than standard APIs)
  • Parallel File Enumeration (Linux): Channel-based BFS with depth-aware parallelism
  • USN Journal Sync (Windows) / inotify (Linux): Real-time file change detection
  • SQLite FTS5: Persistent index with full-text search
  • Memory Optimized: 60-80% reduction through string interning
  • Auto Platform Detection: ModuleInitializer auto-registration per platform

Installation

dotnet add package FastFind.Core

# Platform-specific (auto-registered at runtime)
dotnet add package FastFind.Windows    # Windows
dotnet add package FastFind.Unix       # Linux / macOS

dotnet add package FastFind.SQLite     # Optional: SQLite persistence

Quick Start

Windows

using FastFind;
using Microsoft.Extensions.Logging;

using var loggerFactory = LoggerFactory.Create(b => b.AddConsole());
var searchEngine = FastFinder.CreateWindowsSearchEngine(loggerFactory);

await searchEngine.StartIndexingAsync(new IndexingOptions
{
    DriveLetters = ['C', 'D'],
    ExcludedPaths = ["node_modules", "bin", "obj", ".git"],
    CollectFileSize = true
});

while (searchEngine.IsIndexing) await Task.Delay(500);

var results = await searchEngine.SearchAsync(new SearchQuery
{
    BasePath = @"D:\Projects",
    SearchText = "controller",
    ExtensionFilter = ".cs",
    MaxResults = 100
});

await foreach (var file in results.Files)
{
    Console.WriteLine($"{file.Name} ({file.SizeFormatted})");
}

Linux

using FastFind;
using FastFind.Unix;
using Microsoft.Extensions.Logging;

using var loggerFactory = LoggerFactory.Create(b => b.AddConsole());
var searchEngine = UnixSearchEngine.CreateLinuxSearchEngine(loggerFactory);

await searchEngine.StartIndexingAsync(new IndexingOptions
{
    MountPoints = ["/home", "/opt"],
    ExcludedPaths = ["node_modules", ".git", "__pycache__"],
    CollectFileSize = true
});

while (searchEngine.IsIndexing) await Task.Delay(500);

var results = await searchEngine.SearchAsync(new SearchQuery
{
    BasePath = "/home/user/projects",
    SearchText = "config",
    ExtensionFilter = ".json",
    MaxResults = 100
});

await foreach (var file in results.Files)
{
    Console.WriteLine($"{file.Name} - {file.DirectoryPath}");
}

Performance

Metric Windows Linux
SIMD String Matching 1,877,459 ops/sec 1,877,459 ops/sec (same Vector256)
File Enumeration 31,073 files/sec (MFT) Channel BFS parallel
File Indexing 243,856 files/sec Channel-based async
Search Operations 1,680,631 ops/sec 1,680,631 ops/sec
StringPool Interning 6,437 paths/sec 6,437 paths/sec

See Performance Benchmarks for detailed results.

Documentation

Platform Support

Platform Status Package
Windows 10/11, Server 2019+ Production Ready FastFind.Windows
Linux (Ubuntu, RHEL, Alpine) Preview FastFind.Unix
macOS Planned (Phase 2) FastFind.Unix

License

MIT License - see LICENSE for details.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.3 109 5/10/2026
1.3.2 202 3/8/2026
1.3.1 99 3/6/2026
1.3.0 117 2/27/2026
1.2.0 103 2/27/2026
1.1.0 108 2/27/2026
1.0.13 121 1/14/2026
1.0.12 119 1/13/2026
1.0.11 126 1/10/2026
1.0.10 118 1/9/2026
1.0.9 226 11/26/2025
1.0.3 223 9/25/2025
1.0.2 280 8/8/2025
1.0.0 189 7/31/2025