Often when you have several algorithms that solve a problem but whose runtimes have different characteristics, you determine (empirically, not theoretically) when one algorithm becomes faster than the other. This is highly implementation- and machine-dependent. So measure both the DP algorithm and the B&B algorithm and figure out which one is better when.
A couple of hints:
- You know that DP's runtime is proportional to the number of objects times the size of the knapsack.
- You know that B&B's runtime can be as bad as 2# objects, but it's typically much better. Try to figure out the worst case.
- Caches and stuff are going to matter for DP, so you'll want to estimate its runtime piecewise. Figure out where the breakpoints are.
- DP takes up exorbitant amounts of memory. If it's going to take up too much, you don't really have a choice between DP and B&B.