There are two variables that determine how quickly a character will perform an action: one is the character's speed, the other is the energy cost associated with that action. Whereas speed reflects the overall quickness in thought and action of the character, energy cost reflects the player's particular quickness with that one particular action.
ADOM is a turn-based game, but does simulate the flow of time and different speeds; the system it uses is described in detail in the game manual. In short: The game works in so-called segments. During this segment the creature in question accumulates energy points equal to the creature's speed score. Once a creature has gained 1000 energy points or more, it is allowed to perform an action. Actions will lower the character's energy points by a certain value; this is the energy cost. This energy cost will drop the character's energy points below 1000; they will be allowed to act again once enough segments have passed to get them back, and so on for infinity.
The base energy cost is 1000. Most actions that are not otherwise stated to use more or less than that will cost 1000 energy points. With a base speed of 100 this means that the player can perform such an action precisely once every 10 segments. This base energy cost, however, can be modified by specific actions. For example, performing an attack with melee weapon only costs 1000 energy points if the character is completely untrained with the weapon; with a skill of 1 it costs merely 980 energy points. Many class powers significantly reduce energy points for certain actions the character is particularly talented in; for instance two Archer class powers significantly reduce the energy cost of missile attacks.
Energy cost reductions can stack, although they do suffer from diminishing returns. For example, a level 6 Archer (800 energy missile attack) using a missile at level 1 weapon skill (980 energy cost) would take 100000 / (100 + (100000 / 800 - 100) + (100000 / 980 - 100)) = 787 energy for the attack. Note that the formula uses all integer divisions. This can actually result in rounding errors even for single energy cost reductions. For example, long stride (950 energy cost movement) actually results in 100000 / (100 + (100000 / 950 - 100)) = 952 energy cost movement.
Energy cost reductions can also apply to actions with higher than 1000 energy cost. In this case, the energy cost reduction (with rounding error included) is applied as a percentage multiplier to the high cost action. For example, a Barbarian using mighty blow (2500 energy cost) with a weapon at level 2 weapon skill (960 energy cost, 961 with rounding error) would take 2500 * 0.961 = 2403 energy for the attack. In the event that a character with Stiff muscles (all actions 1500 energy cost) takes an action that would normally cost more than 1000 energy, it's treated as if the action cost 500 energy more, but energy cost reductions are applied to the extra 500 cost separately, potentially resulting in more rounding errors. For example, a Barbarian with stiff muscles using mighty blow with a weapon at level 2 weapon skill would take 2500 * 0.961 + 500 * 0.961 = 2884 energy for the attack.