You'll find tables of machine cycles in the back of any good assembly handbook, and they differ between protected mode and old-fashioned 16-bit. If in protected mode, many instructions differ according to the privilege level of the code.
But machine cycles are only a part of the story. Anything dealing with any hardware (which includes system memory!) can be held up by the hardware, and in extreme cases processor speed becomes completely irrelevant.
Further, the speed of an instruction in machine cycles is not a constant; it depends on surrounding code. Some instructions can pair up properly using the multiple pipes of a modern processor, others cannot. Some fast instructions, in some processors, will run quicker than the processor can retrieve data, so eventually data entry into the processor becomes limiting; but in real code there's likely to be a mix of fast and slow things, so this situation won't arise. It's a typical artificial problem that happens when you write special code to time a particular instruction by running it a million times in a loop.
There are other things that confuse the issue. Most people when they originally moved to 32 bit from 16 bit did so with new, faster hardware. Others recompiled old 16-bit applications with a new 32-bit compiler and were upset that everything got twice as large but not faster. This is grossly unfair; 16-bit data chunks are actually slower to handle in 32-bit world, because they are the wrong size, and every instruction to handle them requires a size override prefix, which costs handling time. If you're writing 32-bit code, it won't run fast unless it takes advantage of the 32 bits!
This is a large subject, and you're going to have to do quite a bit of reading around if you're genuinely interested. If you're looking for a quick-fix for a homework assignment, there isn't one.
I'd recommend Intel's information for programers and processor handbooks. Last time I looked (quite a while ago now) it was all available online.