apache / apache/fesod

Proposal: Introducing FastExcel Benchmark Performance Testing Module

Open
#572 2 comments 1 reaction 0 assignees View on GitHub
suggest
Dominant language
Java
Stars
6.2k
Forks
532
Avg merge
1d 3h
Merged PRs (30d)
42

Description

## Proposal: Introducing FastExcel Benchmark Performance Testing Module

### Background & Project Positioning

FastExcel is positioned as a high-performance Java tool for Excel file processing, with core value propositions:
- **High Performance**: Significantly reduced memory consumption compared to traditional Excel processing libraries
- **Stream Operations**: Memory-friendly processing for large-scale data (millions of rows)
- **Simplicity**: Intuitive API design for easy integration

However, as the project evolves and user base grows, we face several challenges:

1. **Lack of Quantified Performance Validation**: While we claim FastExcel outperforms traditional libraries (e.g., Apache POI), we lack systematic benchmark data to support these claims
2. **Increasing Regression Risk**: Each code change may impact performance, but we currently lack automated performance monitoring mechanisms
3. **Insufficient User Scenario Coverage**: Cannot ensure performance across various data scales and usage scenarios
4. **Difficult Competitive Assessment**: Lack of objective performance comparison data with similar products

### Necessity of Benchmark Module

#### 1. Validate Core Value Proposition
- Verify FastExcel's performance advantages over Apache POI through scientific microbenchmarks
- Provide quantified memory efficiency data to support "significantly reduced memory consumption" claims
- Establish performance baselines to provide users with reliable performance expectations

#### 2. Ensure Development Quality
- Provide data-driven decision support for code optimization
- Establish historical tracking of performance evolution
- Enable systematic performance analysis across different scenarios

#### 3. Enhance User Confidence
- Provide transparent performance test reports to build user trust
- Offer objective performance comparison data for user selection decisions
- Demonstrate best practices and performance across different scenarios

### Technical Solution Design

#### Key Test Scenario Design

1. **Microbenchmarks**
- Data converter performance
- Event processing chain efficiency
- Memory allocation pattern analysis

2. **Large Data Scenario Testing**
```
Data Scale: SMALL(1K) → MEDIUM(10K) → LARGE(100K) → EXTRA_LARGE(1M+)
File Formats: XLSX, XLS, CSV
Operation Types: Read, Write, Fill, Streaming
```

3. **Memory Efficiency Specialized Testing**
- Streaming read memory usage patterns
- Bulk write memory growth curves
- GC pressure analysis

4. **Comparative Benchmarks**
- FastExcel vs Apache POI performance comparison
- Memory usage efficiency comparison
- Performance across different data scales

### Implementation Status

The benchmark module has been fully implemented with the following components:

- **JMH Integration**: Complete Maven configuration with JMH dependencies
- **Comprehensive Test Suites**: Comparison benchmarks, memory efficiency tests, streaming benchmarks
- **Automated Execution**: Multi-profile support with configurable dataset sizes
- **Advanced Features**: Interactive CLI, memory profiling, reports

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.