ci: Fix performance step in CI (#9925)
This commit is contained in:
10
.github/workflows/ci-performance.yml
vendored
10
.github/workflows/ci-performance.yml
vendored
@@ -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'
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user