Liking cljdoc? Tell your friends :D

Research Initiatives Tracking

Purpose: Track progress on research initiatives identified post-Phase 6 completion Related: See RESEARCH_INITIATIVES.md for detailed plans Last Updated: 2025-11-11


Active Initiatives

None Currently Active

All initiatives are in Planning phase awaiting approval to begin.


Initiative Status Dashboard

InitiativeStatusPhaseProgressStartedETA
SIMD Edge Search🟡 Planning0/40%-2-4 weeks
Hybrid Storage🟡 Planning0/40%-4-6 weeks
DAT/DAWG Hybrid🟡 Planning0/50%-8-12 weeks

Status Legend:

  • 🟡 Planning: Not started, awaiting approval
  • 🔵 Active: Currently in progress
  • 🟢 Complete: Finished successfully
  • 🔴 Abandoned: Discontinued (see conclusion for rationale)
  • ⏸️ Paused: Temporarily suspended

SIMD Edge Search

Metadata

  • Initiative ID: RES-001
  • Priority: Medium
  • Estimated Effort: 2-4 weeks
  • Risk Level: Low-Medium
  • Status: 🟡 Planning
  • Branch: (none yet)

Phases

Phase 1: Analysis (Week 1)

Status: Not started Goals:

  • [ ] Profile current DynamicDawg for edge lookup hotspots
  • [ ] Measure edge count distribution in typical dictionaries
  • [ ] Analyze flamegraph to determine if edge search is bottleneck (≥5% threshold)

Decision Point: If edge search < 5% of total time → ABANDON

Phase 2: Microbenchmark (Week 2)

Status: Not started Depends on: Phase 1 success Goals:

  • [ ] Extract SIMD logic from OptimizedDawg
  • [ ] Create benches/edge_search_comparison.rs
  • [ ] Benchmark at edge counts: 2, 4, 8, 16, 32, 64
  • [ ] Test cache sensitivity (warm vs cold)
  • [ ] Determine breakeven point

Decision Point: If SIMD slower or marginal (< 5% improvement) → ABANDON

Phase 3: Integration (Week 3)

Status: Not started Depends on: Phase 2 success Goals:

  • [ ] Implement SIMD edge search in DynamicDawg
  • [ ] Add simd-edge-search feature flag
  • [ ] Ensure all tests pass with SIMD enabled

Phase 4: Validation (Week 4)

Status: Not started Depends on: Phase 3 success Goals:

  • [ ] Run end-to-end benchmarks on corpus workloads
  • [ ] Compare baseline vs SIMD using Criterion
  • [ ] Profile with flamegraph to verify optimization

Decision Point:

  • ≥10% speedup → MERGE and enable by default
  • 5-10% speedup → MERGE but keep as opt-in
  • <5% speedup → ABANDON

Artifacts

  • Design doc: (pending)
  • Feature branch: (pending)
  • Benchmarks: (pending)
  • Flamegraphs: (pending)
  • Conclusion: (pending)

Notes

  • Requires AVX2-capable CPU (✅ Available: Xeon E5-2699 v3)
  • OptimizedDawg SIMD code preserved for reference
  • Early exit criteria at each phase minimize wasted effort

Hybrid Storage

Metadata

  • Initiative ID: RES-002
  • Priority: Low
  • Estimated Effort: 4-6 weeks
  • Risk Level: Medium-High
  • Status: 🟡 Planning
  • Branch: (none yet)

Phases

Phase 1: Analysis (Weeks 1-2)

Status: Not started Goals:

  • [ ] Memory profiling of current DynamicDawg using Valgrind massif
  • [ ] Component breakdown: node overhead, Vec capacity, alignment padding
  • [ ] Estimate theoretical savings from arena storage

Decision Point: If potential savings < 20% → ABANDON

Phase 2: Prototype (Weeks 3-4)

Status: Not started Depends on: Phase 1 success Goals:

  • [ ] Implement hybrid storage in feature branch
  • [ ] Create DynamicDawgImmutable type
  • [ ] Implement conversion from DynamicDawg
  • [ ] Verify correctness: all tests pass

Phase 3: Benchmarking (Week 5)

Status: Not started Depends on: Phase 2 success Goals:

  • [ ] Memory benchmarks
  • [ ] Query performance benchmarks
  • [ ] Construction overhead benchmarks

Decision Point: If <20% memory reduction OR >5% query regression → ABANDON

Phase 4: API Design (Week 6)

Status: Not started Depends on: Phase 3 success Goals:

  • [ ] Design user-facing API (separate type vs mode flag vs type state)
  • [ ] Document API with examples
  • [ ] Integration testing with transducers

Artifacts

  • Design doc: (pending)
  • Feature branch: (pending)
  • Memory profiles: (pending)
  • Benchmarks: (pending)
  • API documentation: (pending)
  • Conclusion: (pending)

Notes

  • Higher complexity due to dual storage modes
  • Maintenance burden: two code paths to test
  • May increase codebase complexity without sufficient benefit
  • Consider API usability carefully

DAT/DAWG Hybrid

Metadata

  • Initiative ID: RES-003
  • Priority: High (novel contribution)
  • Estimated Effort: 8-12 weeks
  • Risk Level: High
  • Status: 🟡 Planning
  • Branch: (none yet)

Phases

Phase 1: Literature Review & Design (Weeks 1-3)

Status: Not started Goals:

  • [ ] Literature survey: DAT papers (Aoe 1989, Yata 2007, etc.)
  • [ ] Literature survey: DAWG papers (Crochemore 1985, etc.)
  • [ ] Search for existing DAT+DAWG combinations
  • [ ] Create comprehensive design document (30+ pages)
  • [ ] Complexity analysis: theoretical bounds

Deliverable: docs/research/DAT_DAWG_HYBRID_DESIGN.md

Decision Point: If design shows fundamental flaw or prior art exists → ABANDON

Phase 2: Prototype Implementation (Weeks 4-7)

Status: Not started Depends on: Phase 1 success Goals:

  • [ ] Implement core data structure (DatDawgHybrid)
  • [ ] Implement construction algorithm
  • [ ] Implement query algorithm
  • [ ] Basic functionality working

Phase 3: Correctness Validation (Week 8)

Status: Not started Depends on: Phase 2 success Goals:

  • [ ] Comprehensive unit tests
  • [ ] Property-based tests
  • [ ] Fuzzing with random dictionaries
  • [ ] Equivalence testing vs reference DAWG

Phase 4: Performance Benchmarking (Weeks 9-10)

Status: Not started Depends on: Phase 3 success Goals:

  • [ ] Construction benchmarks vs all backends
  • [ ] Query benchmarks vs all backends
  • [ ] Memory measurements vs all backends
  • [ ] Flamegraph analysis

Decision Point: If performance worse than DynamicDawg → ANALYZE for optimization opportunities

Phase 5: Optimization (Weeks 11-12)

Status: Not started Depends on: Phase 4 results Goals:

  • [ ] Optimize hot paths identified in flamegraphs
  • [ ] Cache-friendly data layout
  • [ ] SIMD opportunities (if applicable)
  • [ ] Re-benchmark after optimizations

Success Criteria:

  • Space: Within 2× of DynamicDawg
  • Speed: Within 2× of DoubleArrayTrie
  • Construction: Better than DoubleArrayTrie

Artifacts

  • Literature review: docs/research/DAT_DAWG_HYBRID/references/ (pending)
  • Design doc: docs/research/DAT_DAWG_HYBRID/DESIGN.md (pending)
  • Feature branch: (pending)
  • Prototype code: (pending)
  • Benchmarks: (pending)
  • Flamegraphs: (pending)
  • Paper draft: (if successful - pending)
  • Conclusion: (pending)

Notes

  • Most ambitious initiative (novel data structure)
  • Success probability: 40-60%
  • Potential for academic publication if successful
  • Requires deep expertise in both DAT and DAWG algorithms
  • MP DAT is different (uses TAIL array, not suffix sharing in DAT part)

Completed Initiatives

None Yet


Abandoned Initiatives

None Yet


Decision Log

2025-11-11: Initiatives Identified

Context: OptimizedDawg deprecation analysis revealed potential optimization opportunities Decision: Document three research initiatives for future work Rationale:

  • Phase 6 now complete (100% feature parity)
  • OptimizedDawg deprecated (reduced maintenance burden)
  • Time to explore advanced optimizations Status: All initiatives in Planning phase

Methodology Standards

All research initiatives must follow the scientific method:

1. Hypothesis Formation

  • Clear, testable hypothesis with null hypothesis (H₀)
  • Defined success criteria (quantitative)
  • Alternative outcomes considered

2. Methodology Design

  • Phased approach with early exit criteria
  • Decision points based on empirical data
  • Controls and baselines defined

3. Data Collection

  • Benchmarking with Criterion (statistical rigor)
  • Profiling with flamegraph + perf
  • Memory measurement with Valgrind/heaptrack
  • Multiple corpora for validation

4. Analysis

  • Statistical significance testing
  • Comparison against baseline
  • Identify bottlenecks and optimization opportunities

5. Conclusion

  • Accept or reject hypothesis based on data
  • Document findings comprehensively
  • Preserve results for future reference

6. Documentation

Every initiative must produce:

  • Design document (before implementation)
  • Benchmark results (data-driven decisions)
  • Flamegraphs (performance analysis)
  • Conclusion document (final analysis)
  • Code artifacts (if successful)

Resource Requirements

Tools Available

  • ✅ Criterion (statistical benchmarking)
  • ✅ flamegraph + perf (profiling)
  • ✅ Valgrind massif (memory profiling)
  • ⚠️ heaptrack (install if needed)

Corpora Available

  • ✅ big.txt (Norvig corpus, 1M+ words)
  • ✅ holbrook.dat (spelling errors)
  • ✅ /usr/share/dict/words (system dictionary)

Hardware

  • ✅ Xeon E5-2699 v3 (36 cores, AVX2 support)
  • ✅ 252 GB RAM (sufficient for large-scale tests)
  • ✅ 4TB NVMe SSD (fast I/O)

Communication Guidelines

Starting an Initiative

  1. Review detailed plan in RESEARCH_INITIATIVES.md
  2. Create design document in docs/research/[initiative-name]/
  3. Update this file: set Status to 🔵 Active
  4. Create feature branch: research/[initiative-name]
  5. Update tracking as each phase completes

Completing a Phase

  1. Check off completed goals in phase section
  2. Document artifacts created
  3. Update progress percentage
  4. If decision point reached: document decision and rationale

Abandoning an Initiative

  1. Update Status to 🔴 Abandoned
  2. Document reason in Notes section
  3. Create conclusion document explaining decision
  4. Archive artifacts for future reference

Completing an Initiative

  1. Update Status to 🟢 Complete
  2. Move to "Completed Initiatives" section
  3. Document final outcomes
  4. Update main codebase if successful
  5. Update CHANGELOG.md

Next Steps

Immediate: All initiatives documented and ready for approval

To start any initiative:

  1. Review detailed plan in RESEARCH_INITIATIVES.md
  2. Confirm time commitment available
  3. Create design document
  4. Begin Phase 1

Recommended starting order:

  • Quick wins: Start with SIMD Edge Search (2-4 weeks)
  • Novel contribution: Start with DAT/DAWG Hybrid (8-12 weeks)
  • Practical improvement: Start with SIMD, skip others unless successful

Maintainer: (project maintainer) Last Updated: 2025-11-11 Next Review: After first initiative completion

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close