ci: Fix performance step in CI (#9925)

This commit is contained in:
Manuel
2025-11-09 13:30:23 +01:00
committed by GitHub
parent d94f348d86
commit 36e166cc81
3 changed files with 10 additions and 10 deletions

View File

@@ -247,13 +247,13 @@ jobs:
const changeStr = change > 0 ? \`+\${change.toFixed(1)}%\` : \`\${change.toFixed(1)}%\`; const changeStr = change > 0 ? \`+\${change.toFixed(1)}%\` : \`\${change.toFixed(1)}%\`;
let status = '✅'; let status = '✅';
if (change > 100) { if (change > 50) {
status = '❌ Much Slower'; status = '❌ Much Slower';
hasRegression = true; hasRegression = true;
} else if (change > 50) { } else if (change > 25) {
status = '⚠️ Slower'; status = '⚠️ Slower';
hasRegression = true; hasRegression = true;
} else if (change < -50) { } else if (change < -25) {
status = '🚀 Faster'; status = '🚀 Faster';
hasImprovement = true; hasImprovement = true;
} }
@@ -304,9 +304,9 @@ jobs:
echo "" >> comment.md echo "" >> comment.md
echo "</details>" >> comment.md echo "</details>" >> comment.md
echo "" >> comment.md echo "" >> comment.md
echo "*Benchmarks ran with ${BENCHMARK_ITERATIONS:-1000} iterations per test on Node.js ${{ env.NODE_VERSION }} (production mode, CPU pinned)*" >> comment.md echo "*Benchmarks ran with ${BENCHMARK_ITERATIONS:-10000} iterations per test on Node.js ${{ env.NODE_VERSION }} (production mode, CPU pinned)*" >> comment.md
echo "" >> comment.md echo "" >> comment.md
echo "> **Note:** Using 1k iterations with CPU affinity for measurement stability. Thresholds: ⚠️ >50%, ❌ >100%." >> comment.md echo "> **Note:** Using 10k iterations with CPU affinity for measurement stability. Thresholds: ⚠️ >25%, ❌ >50%." >> comment.md
- name: Comment PR with results - name: Comment PR with results
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'

View File

@@ -341,7 +341,7 @@ Performance benchmarks are located in [`benchmark/performance.js`](benchmark/per
4. **Test locally**: Run the benchmarks locally to verify they work: 4. **Test locally**: Run the benchmarks locally to verify they work:
```bash ```bash
npm run benchmark:quick # Quick test with 10 iterations npm run benchmark:quick # Quick test with 10 iterations
npm run benchmark # Full test with 1,000 iterations npm run benchmark # Full test with 10,000 iterations
``` ```
For new features where no baseline exists, the CI will establish new benchmarks that future PRs will be compared against. For new features where no baseline exists, the CI will establish new benchmarks that future PRs will be compared against.

View File

@@ -19,7 +19,7 @@ const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/parse_
const SERVER_URL = 'http://localhost:1337/parse'; const SERVER_URL = 'http://localhost:1337/parse';
const APP_ID = 'benchmark-app-id'; const APP_ID = 'benchmark-app-id';
const MASTER_KEY = 'benchmark-master-key'; const MASTER_KEY = 'benchmark-master-key';
const ITERATIONS = parseInt(process.env.BENCHMARK_ITERATIONS || '1000', 10); const ITERATIONS = parseInt(process.env.BENCHMARK_ITERATIONS || '10000', 10);
// Parse Server instance // Parse Server instance
let parseServer; let parseServer;
@@ -248,7 +248,7 @@ async function benchmarkBatchSave() {
} }
await Parse.Object.saveAll(objects); await Parse.Object.saveAll(objects);
}, Math.floor(ITERATIONS / BATCH_SIZE)); // Fewer iterations for batch operations });
} }
/** /**
@@ -264,7 +264,7 @@ async function benchmarkUserSignup() {
user.set('password', 'benchmark_password'); user.set('password', 'benchmark_password');
user.set('email', `benchmark${counter}@example.com`); user.set('email', `benchmark${counter}@example.com`);
await user.signUp(); await user.signUp();
}, Math.floor(ITERATIONS / 10)); // Fewer iterations for user operations });
} }
/** /**
@@ -290,7 +290,7 @@ async function benchmarkUserLogin() {
const userCreds = users[counter++ % users.length]; const userCreds = users[counter++ % users.length];
await Parse.User.logIn(userCreds.username, userCreds.password); await Parse.User.logIn(userCreds.username, userCreds.password);
await Parse.User.logOut(); await Parse.User.logOut();
}, Math.floor(ITERATIONS / 10)); // Fewer iterations for user operations });
} }
/** /**