As Paully's5.0 mentioned, the CLR instruction is a little simpler in that it has one less operand. In general, the "space" instructions take up is not much of an issue.
Evaluating a programming solution is based on:
Does it work?
Is it easy to understand?
Does it use memory well (not waste a lot of memory)?
Does it execute reasonably (not waste scan time)?
A whole bunch of CLR instructions on the same rung scores pretty well on all counts.
It works. It's obvious what it does. While it may take up a lot of screen space, it doesn't take any more memory than it absolutely needs. It will execute as fast or faster than any of the alternatives mentioned.
Using "MOV 0 TagName" is OK but it does waste a little memory storing a constant 0 over and over.
I call "CLR TagName" a clear winner with no need to be "improved".
OK, I just had to see what the difference was. Here it is for the real geeks.
CLR DINT takes 20 bytes of memory and executes in 0.06 microseconds
MOV DINT-DINT takes 24 bytes of memory and executes in 0.08 microseconds.
(The 4 extra bytes for the second operand address makes sense. 33% more execution time to read that extra operand.)
(statistics are for 1756-L71 running version 20)
For clearing a random assortment of tags, a bunch of CLR instructions is going to be hard to beat. I would use an AOI if I needed to clear a UDT structure on a regular basis. Or even to initialize a UDT structure to non-zero values. The AOI would win based on it being easier to understand. I doubt I could do anything to improve memory usage or execution time.