@@ -179,163 +179,3 @@ func BenchmarkTransientHandleMultiParallel(b *testing.B) {
179179 }
180180 })
181181}
182-
183- // Parallel comparison: Handle vs HandleLegacy
184- func BenchmarkTransientHandleVsLegacyParallel (b * testing.B ) {
185- dsn := os .Getenv ("MYSQL_BENCH_DSN" )
186- if dsn == "" {
187- b .Skip ("set MYSQL_BENCH_DSN to run this benchmark" )
188- }
189- schema := os .Getenv ("MYSQL_BENCH_SCHEMA" )
190- if schema == "" {
191- b .Skip ("set MYSQL_BENCH_SCHEMA to run this benchmark" )
192- }
193-
194- catalog := ""
195- table := "t_seq_bench_par_cmp"
196- idCol := "id"
197-
198- records := int64 (1 )
199- if v := os .Getenv ("MYSQL_BENCH_RECORDS" ); v != "" {
200- if n , err := strconv .ParseInt (v , 10 , 64 ); err == nil && n > 0 {
201- records = n
202- }
203- }
204-
205- db , err := sql .Open ("mysql" , dsn )
206- if err != nil {
207- b .Fatalf ("open dsn: %v" , err )
208- }
209- defer db .Close ()
210- if err := db .Ping (); err != nil {
211- b .Fatalf ("ping: %v" , err )
212- }
213-
214- if _ , err := db .Exec ("DROP TABLE IF EXISTS `" + schema + "`.`" + table + "`" ); err != nil {
215- b .Fatalf ("drop table: %v" , err )
216- }
217- if _ , err := db .Exec ("CREATE TABLE `" + schema + "`.`" + table + "` ( `" + idCol + "` BIGINT AUTO_INCREMENT PRIMARY KEY, `foo_name` TEXT )" ); err != nil {
218- b .Fatalf ("create table: %v" , err )
219- }
220- b .Cleanup (func () {
221- _ , _ = db .Exec ("DROP TABLE IF EXISTS `" + schema + "`.`" + table + "`" )
222- })
223-
224- builder := func (seq * sink.Sequence ) (* sqlx.SQL , int64 , error ) {
225- inc := seq .IncrementBy
226- if inc == 0 {
227- inc = 1
228- }
229- target := seq .Value
230- if records > 1 {
231- target = seq .Value + (records - 1 )* inc
232- }
233- var idArg int64 = target
234- var name = fmt .Sprintf ("%d" , idArg )
235- sql := & sqlx.SQL {
236- Query : "INSERT INTO `" + schema + "`.`" + table + "` (foo_name,`" + idCol + "`) VALUES (?,?)" ,
237- Args : []interface {}{& name , & idArg },
238- }
239- return sql , records , nil
240- }
241-
242- args := option .NewArgs (catalog , schema , table )
243- opts := []option.Option {
244- dialect .PresetIDWithTransientTransaction ,
245- option .RecordCount (records ),
246- args ,
247- builder ,
248- mysqlprod .MySQL5 (),
249- }
250-
251- ctx := context .Background ()
252- h := & seqpkg.Transient {}
253-
254- b .Run ("HandleParallel" , func (b * testing.B ) {
255- b .ReportAllocs ()
256- b .ResetTimer ()
257- b .RunParallel (func (pb * testing.PB ) {
258- for pb .Next () {
259- var seq sink.Sequence
260- if _ , err := h .Handle (ctx , db , & seq , option .Options (opts ).Interfaces ()... ); err != nil {
261- b .Fatalf ("Handle failed: %v" , err )
262- }
263- }
264- })
265- })
266-
267- b .Run ("HandleLegacyParallel" , func (b * testing.B ) {
268- b .ReportAllocs ()
269- b .ResetTimer ()
270- b .RunParallel (func (pb * testing.PB ) {
271- for pb .Next () {
272- var seq sink.Sequence
273- if _ , err := h .HandleLegacy (ctx , db , & seq , option .Options (opts ).Interfaces ()... ); err != nil {
274- b .Fatalf ("HandleLegacy failed: %v" , err )
275- }
276- }
277- })
278- })
279-
280- /////////
281- // Default to 10 record; override with env if needed
282- recordsN := int64 (10 )
283- if v := os .Getenv ("MYSQL_BENCH_RECORDS_N" ); v != "" {
284- if n , err := strconv .ParseInt (v , 10 , 64 ); err == nil && n > 0 {
285- recordsN = n
286- }
287- }
288-
289- builderN := func (seq * sink.Sequence ) (* sqlx.SQL , int64 , error ) {
290- inc := seq .IncrementBy
291- if inc == 0 {
292- inc = 1
293- }
294- target := seq .Value
295- if records > 1 {
296- target = seq .Value + (records - 1 )* inc
297- }
298- var idArg int64 = target
299- var name = fmt .Sprintf ("%d" , idArg )
300- sql := & sqlx.SQL {
301- Query : "INSERT INTO `" + schema + "`.`" + table + "` (foo_name,`" + idCol + "`) VALUES (?,?)" ,
302- Args : []interface {}{& name , & idArg },
303- }
304- return sql , records , nil
305- }
306-
307- optsN := []option.Option {
308- dialect .PresetIDWithTransientTransaction ,
309- option .RecordCount (recordsN ),
310- args ,
311- builderN ,
312- mysqlprod .MySQL5 (),
313- }
314-
315- b .Run ("HandleParallel N-rec" , func (b * testing.B ) {
316- b .ReportAllocs ()
317- b .ResetTimer ()
318- b .RunParallel (func (pb * testing.PB ) {
319- for pb .Next () {
320- var seq sink.Sequence
321- if _ , err := h .Handle (ctx , db , & seq , option .Options (optsN ).Interfaces ()... ); err != nil {
322- b .Fatalf ("Handle failed: %v" , err )
323- }
324- }
325- })
326- })
327-
328- b .Run ("HandleLegacyParallel N-rec" , func (b * testing.B ) {
329- b .ReportAllocs ()
330- b .ResetTimer ()
331- b .RunParallel (func (pb * testing.PB ) {
332- for pb .Next () {
333- var seq sink.Sequence
334- if _ , err := h .HandleLegacy (ctx , db , & seq , option .Options (optsN ).Interfaces ()... ); err != nil {
335- b .Fatalf ("HandleLegacy failed: %v" , err )
336- }
337- }
338- })
339- })
340-
341- }
0 commit comments