how different is this from oprofile?
LTTng, on the other hand, is a tracer, which means it collects events from the kernel (using the built-in tracepoint facilities) as they happen. It's also possible to trace userspace apps (with lttng-ust), or define your own tracepoints. This has the benefit of being much more detailed, and also has a much smaller overhead.
You might be interested in reading the "What is Tracing?" section of the lttng docs [0], which does a far better job at explaining this than I do.