> For the complete documentation index, see [llms.txt](https://docs.zingg.ai/zingg/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zingg.ai/zingg/reference/hardware-sizing-and-benchmarks.md).

# Hardware Sizing and Benchmarks

Hardware required for different sizes of data. Real-world benchmarks across local Spark, AWS, and large clusters to help you size your Zingg deployment.

Zingg has been built to scale. Performance depends on three factors:

* The number of records to be matched
* The number of fields to be compared against each other
* The actual number of duplicates in your data

Use the benchmarks below as starting points when sizing your Zingg deployment. Your actual runtime will vary based on data complexity, field types, blocking strategy, and the match types in your configuration.

### Benchmarks

Real-world Zingg runs across different dataset sizes and hardware:

<table><thead><tr><th width="171.26953125" valign="top">Records</th><th>Reported By</th><th width="154.53515625" valign="top">Fields</th><th valign="top">Hardware</th><th valign="top">Runtime</th></tr></thead><tbody><tr><td valign="top">120k</td><td>Zingg Team</td><td valign="top">febrl test schema</td><td valign="top">4 cores, 10 GB RAM, local Spark</td><td valign="top">5 minutes</td></tr><tr><td valign="top">5m (North Carolina Voters)</td><td>Zingg Team</td><td valign="top">voter schema</td><td valign="top">4 cores, 10 GB RAM, local Spark</td><td valign="top">~4 hours</td></tr><tr><td valign="top">9m</td><td>Zingg Team</td><td valign="top">3 fields (first name, last name, email)</td><td valign="top">AWS m5.24xlarge - 96 cores, 384 GB RAM</td><td valign="top">45 minutes</td></tr><tr><td valign="top">80m</td><td>Community User</td><td valign="top">8 to 10 fields</td><td valign="top">1 driver (128 GB RAM, 32 cores) + 8 workers (224 GB RAM, 64 cores)</td><td valign="top">Less than 2 hours</td></tr></tbody></table>

### When to use Spark local mode

For up to a few million records, it may be easier to run Zingg on a single machine in Spark local mode rather than provisioning a cluster. The first two benchmarks above (120k and 5m records) ran in this mode.

The threshold to move from local mode to a cluster is roughly:

* Up to \~5 million records - local mode on a single machine works well
* Above \~5 million records - cluster mode (Databricks, Fabric, EMR, or self-managed Spark) recommended
* Above \~50 million records - multi-worker cluster strongly recommended

### Docker for local development

For local development, proof of concept work, and validating the match workflow before sizing production hardware, the Zingg Docker image runs on any machine with Docker installed. No cluster setup required.

{% hint style="success" icon="right-long" %}
**Read more**:

* [Quick Start](/zingg/running-zingg/quick-start-docker.md) - run Zingg locally via Docker
* [Install Zingg](/zingg/running-zingg/install-zingg.md) - full installation options across platforms
* [Configure Zingg](/zingg/running-zingg/configure-zingg.md) - `numPartitions` and partitioning configuration that affect performance"
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.zingg.ai/zingg/reference/hardware-sizing-and-benchmarks.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
