perf

Benchmark created on


Setup

// Mock ObjectId generator
function ObjectId() {
  return Math.random().toString(36).substr(2, 24);
}

// Mock objects
const user = { _id: 'user_12345' };
const nonprofit = { _id: 'nonprofit_67890' };
const testCompany = { _id: 'company_abcde' };
const processedPayrollRun = { _id: 'payroll_fghij' };

const DonationDisbursementType = {
  PayrollDonation: 'PAYROLL_DONATION'
};

const donationCount = 10000;
let donations = [];
let disbursements = [];

Test runner

Ready to run.

Testing in
TestOps/sec
unoptimised
donations = [];
disbursements = [];

for (let i = 0; i < donationCount; i++) {
  const donationId = new ObjectId();
  const donation = {
    _id: donationId,
    user: user._id,
    total: 50 + (i % 50),
    currency: 'USD',
    feeAmount: 2.5 + (i % 50) * 0.1,
    date: new Date('2025-01-15'),
    createdAt: new Date('2025-01-15'),
  };
  donations.push(donation);

  const disbursement = {
    _id: new ObjectId(),
    donation: donationId,
    nonprofit: nonprofit._id,
    company: testCompany._id,
    donationDisbursementType: DonationDisbursementType.PayrollDonation,
    amount: donation.total - donation.feeAmount,
    total: donation.total,
    currency: 'USD',
    payrollRun: processedPayrollRun._id,
  };
  disbursements.push(disbursement);
}
ready
optimised
donations = [];
disbursements = [];

const baseDate = new Date('2025-01-15');
const userId = user._id;
const nonprofitId = nonprofit._id;
const testCompanyId = testCompany._id;
const payrollDonationType = DonationDisbursementType.PayrollDonation;
const payrollRunId = processedPayrollRun._id;

for (let i = 0; i < donationCount; i++) {
  const donationId = new ObjectId();
  const modValue = i % 50;

  const donationTotal = 50 + modValue;
  const donationFeeAmount = 2.5 + modValue * 0.1;

  const donation = {
    _id: donationId,
    user: userId,
    total: donationTotal,
    currency: 'USD',
    feeAmount: donationFeeAmount,
    date: baseDate,
    createdAt: baseDate,
  };
  donations.push(donation);

  const disbursement = {
    _id: new ObjectId(),
    donation: donationId,
    nonprofit: nonprofitId,
    company: testCompanyId,
    donationDisbursementType: payrollDonationType,
    amount: donationTotal - donationFeeAmount,
    total: donationTotal,
    currency: 'USD',
    payrollRun: payrollRunId,
  };
  disbursements.push(disbursement);
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.