Are ABL objects unoptimized compared to their Ableton Live counterparts?

Daniel Isaac Miller's icon

I'd like to preface this post with the statement that I have no idea the accuracy of Max or Live's CPU meters and the testing I've done is far from scientific.

With the advent of Max 9, I considered using ABL objects to help speed up some development, but wanted to test their efficiency before getting my hopes up. I created a patcher, dropped in an abl.device.roar~ object, hooked it to an ezdac~, turned it on, and the sidebar CPU meter immediately jumped to a consistent 4%. So a Roar object producing no sound costs 4% CPU on a M2 Max MacBook Pro with the fastest CPU and 96GB of RAM; not great, not terrible.

In Live, I created an audio track, dropped in a Live instance of Roar, and it was wavering between 0% and 1% in Live's CPU meter. I then made a Max For Live effect and ran the plugin~ and plugout~ to & from a single instance of abl.device.roar~, the results were identical to what I saw in Max; 4%-5%.

I've done a few tests now between the commensurate Max ABL objects and their Live counterparts and in all of them Live has been demonstratively more efficient. Is this to be expected? Is there more optimization scheduled in the roadmap?

These objects weren't created in gen~, so I'd imagine they're ported using pure C++ which I would believe would provide a 1:1 or be somewhat close in performance, but I might be wrong about that due to the environments in which I've hosted them. I realize Max is never going to be as performant as Live due to them being "hardwired", but I'm still surprised at how inefficient some of these objects are for what they provide.

I'm sure I'm missing something, so I'm posting this in hopes someone can explain this for me to help either figure out how to optimize or burn my dream down so I can get back to programming in gen~.

Roman Thilenius's icon

two things you might have overlooked:
- the connections going from and to the object might be more hungry than making such connections in an enviroment like live
- multiprocessor/multicore (when testing a bunch of instances together)

and of course you should set max to the same vectorsize as live uses (64?)

Wil's icon

Using spat5.hostinfos

abl.device.roar~ at 1% ,

twisting all the dials never peaks past 3%

signal vector size 32

I/O vector 256

M1 Max Mac

Sequoia 15.2 beta

//

haha..

I found the CPU meter in Max 9!

so cute

It reads 2% against spat5 1%


Daniel Isaac Miller's icon

Aw, jeez; I totally forgot to reset my I/O and signal vector sizes after installing Max9. 🤦🏻

After waking up and reading the replies, I "retested" everything with matching buffer settings and got near-commensurate performance; Roar & the Roar help file are both idling at 1%.

For posterity, ABL objects are as optimized as their Live counterparts; good work, Max team.

Thanks @Roman & @WIL.

My new cut-off time for patching is now 2:00am.