RenderPartial writes the result directly to the response, technically speaking, directly into the calling object's TextWriter. RenderPartial is a bit faster and hence developers prefer using it inside the looping constructs and related scenarios.
Partial on the other hand returns the HTML markup as string, which buffers the content. It achieves by creating and using a separate TextWriter.
RenderAction Invokes the specified child action method and renders the result inline in the parent view. In other words allows you call Action from view.
RenderPage Renders the specified view (identified by path and file name rather than by view name) directly to the response stream, like Html.RenderPartial().
Everything depends on situation.