[ARM is better than AVR is better than PIC, etc]
By my calculations, a modern 8bit PIC (PIC16f1707 is the datasheet I happen to be looking at) can set a bit in any IO register in two (14-bit) instructions:
movlb bank(regAddr)
bsf offset(regAddr), regBit
A modern AVR requires 3 instructions, two of which are 32bits long - 10 bytes (because not all IOregs are accessible via SBI):
lds r16, regAddr
ori r16, bit
sts r16, regAddr
A modern ARM CM0 takes a whopping 5 instruction plus 2 data words, for 18 bytes total:
ldr r1, =regAddr
ldr r2, [r1]
ldr r3, =regBit
orrs r2, r3
str r2, [r1]
(ok, you could do that with only 16 bytes by changing the load of regBit to a mov (immediate) and a shift, adding one instruction but deleting 4 bytes of constant.)
(Cortex m3 and so on are better (14 bytes, one less register used) because orr gets a thumb2 "immediate" mode.)
This doesn't include "secondary effects" - the PIC code sets the memory bank register, the AVR and ARM codes use one or more of the GP registers, etc. Nor ease of applicability to more general or less general cases. And it's not really meant to show "better" in any real sense. It's just a reminder that these things are more complicated than they seem at first glance.
(Now, I don't actually program any of these in assembly language on a regular basis, so I'd be happy to see these "improved." But I did look pretty carefully, and checked C output, so I'm pretty sure that these are pretty accurate.)
(I've been finding the CM0 "16-bit thumb-only" instruction set to be pretty depressing. Especially since it's being positioned against 8bit chip with versions having similar flash content. But then, I guess you're not supposed to program it in assembly...)