Just a note: Depending on the situation, the reason Raycasting yourself could be cheaper is that if you don’t need super high fidelity you can do less work than the Humanoid does. The humanoid may Raycast up to 9 times to determine the floor in order to catch every edge case, but you might be happy enough with the result from a single Raycast.
EDIT: Though remember, if your code is running on the same peer that’s simulating the Humanoid, the floor has to be calculated every frame anyways for the Humanoid to work. There’s only any additional cost if you ask for the FloorMaterial on a different peer that wasn’t calculating it by default (such as asking for a player’s FloorMaterial on the server).