MPPT Charge Controller
An MPPT charge controller uses maximum power point tracking to draw as much power as possible from a solar panel as sunlight, shading and temperature change, then charges the battery with it.
According to Wikipedia, MPPT and PWM controllers both adjust the charging rate as the battery fills. An MPPT controller can also let a higher voltage array charge a lower voltage battery, such as a 150 volt array charging a 24 or 48 volt bank, which lowers current and wiring cost.
Controller losses are part of the system efficiency in the solar charging time calculator, which uses 75% in its example. The guide to solar battery charging compares PWM and MPPT controllers.