Skip to content

Slow reduction using delta debugging #8712

@kripken

Description

@kripken

I see

|input size: 248089                         
|starting reduction!                        
|    try to remove function bodies          
|     try partition 1 / 1 (size 0 / 1745)   
|     try partition 1 / 2 (size 873 / 1745) 
|     try partition 2 / 2 (size 872 / 1745) 
|     try partition 1 / 4 (size 437 / 1745) 
|     try partition 2 / 4 (size 436 / 1745) 
|     try partition 3 / 4 (size 436 / 1745) 
|     try partition 4 / 4 (size 436 / 1745)  
|     try partition 1 / 4 (size 1308 / 1745) 
|     try partition 2 / 4 (size 1309 / 1745) 
|     try partition 3 / 4 (size 1309 / 1745) 
|     try partition 4 / 4 (size 1309 / 1745) 
|     try partition 1 / 8 (size 219 / 1745) 
|     try partition 2 / 8 (size 218 / 1745) 
|     try partition 3 / 8 (size 218 / 1745) 
|     try partition 4 / 8 (size 218 / 1745) 
|     try partition 5 / 8 (size 218 / 1745) 
|     try partition 6 / 8 (size 218 / 1745) 
|     try partition 7 / 8 (size 218 / 1745) 
|     try partition 8 / 8 (size 218 / 1745) 
|     try partition 1 / 8 (size 1526 / 1745)
|     try partition 2 / 8 (size 1527 / 1745) 
|     try partition 3 / 8 (size 1527 / 1745) 
|     try partition 1 / 7 (size 219 / 1527)  
|     try partition 2 / 7 (size 218 / 1527)  
|     try partition 3 / 7 (size 218 / 1527)
|     try partition 4 / 7 (size 218 / 1527)
|     try partition 5 / 7 (size 218 / 1527)
|     try partition 6 / 7 (size 218 / 1527)
|     try partition 7 / 7 (size 218 / 1527)
|     try partition 1 / 7 (size 1308 / 1527)
|     try partition 2 / 7 (size 1309 / 1527)
|     try partition 3 / 7 (size 1309 / 1527)
|     try partition 4 / 7 (size 1309 / 1527)
|     try partition 5 / 7 (size 1309 / 1527)
|     try partition 1 / 6 (size 219 / 1309)
|     try partition 2 / 6 (size 218 / 1309)
|     try partition 3 / 6 (size 218 / 1309)
|     try partition 4 / 6 (size 218 / 1309)

And it just keeps trying more and more here. This has been doing on for several minutes, with each change taking 1-2 seconds. It is making progress, but trying the passes and destructive reduction etc. in between could be a lot faster, I think.

@tlively I think we do need something like taking the factor into account. The basic idea there is that no single method works to exhaustion, they each try a small amount and then cycle. No single method knows how well the others can do - e.g. possibly a single -O3 would immediately do all the work that function removal is doing manually.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions