There are sort of 3 common ways to get text with an outline.
The first method is to use an external font tool to create a font with an outline or photoshop. This results in some font data along with a font atlas texture which contains all the characters in this bitmap texture. Since this font atlas texture is static, if you need a different point size or need a thicker outline or an outline of a different color, you need to create another font so you end up with as many fonts / textures as you have variations. From a visual point of view, as long as the font is rendered at the point size it was created, the outline and text will look nice. From a performance point of view, each character is rendered into two triangles which is efficient. This is using a bitmap font so as you zoom in, it will get pixelated.
The second method is to use Unity’s UI.Text with the Outline and Shadow FX scripts (assuming you also want shadows). This is implemented by those scripts duplicating and stamping the current text (4 times in the case of the outline) with an offset in order to create the outline. From a visual stand point as seen below, this is not accurate.
In that image, I used an offset value of 5 and -5 in order to make it easier to see how it is done. When using a thinner outline and small font it can look ok. Since these offset values are in pixels, as you change the point size of the text, the outline gets thinner or thicker. All this might be ok however, the real issue with this technique is that it more than quadruples the geometry which results in a significant performance impact which you can see in the table below. Since this is still using a bitmap font, as you zoom in, it will get pixelated.
The third method is what TextMesh Pro does where the outlines and / or shadows are done by the shader and made possible by the use of SDF (Signed Distance Field) Font Assets which you create with the included Font Asset Creator. Unlike a bitmap font atlas texture where the pixels in the texture represent the shape of the characters, the SDF Font Atlas texture contains distance information to represent the shape of the characters. More precisely, for each pixel a distance to the nearest edge of the character is stored in this static SDF Font Atlas texture. Since the distance to the nearest edge of the characters is a constant, this text will render correctly at any point size and zoom factor and will never get pixelated. Since the outline thickness is relative to this distance, as the point size changes, the outline thickness remains proportional. See the image below of the same word at the same point size.
You can clearly see how clean the outline and soft shadow look. Unlike the first method where you need to create a new font atlas texture for each point size, thickness, color, etc… Only (1) single SDF Font Asset is required to create as many permutations as you want and for any given point size. In order to get different looks, you simply tweak the material properties and create material presets to recall those different looks. Here is an example where all I did was play with the material properties.
Now from a performance point of view, each character is still rendered into two triangles. Although the shader(s) have to do more work than plain bitmap shaders, when using outline and shadow it is marginal.
Here is a chart comparing UI.Text vs. TextMesh Pro. These tests were done in Unity 5.3.3p1 using the latest release of TextMesh Pro available on the user forum. These tests were done on an Android Galaxy Tab A. Time (ms) is that of Canvas.SendWillRenderCanvases() which is where the text is generated by both UI.Text and TextMeshProUGUI. These tests were done using the Canvas system.
Geometry count is that of text “Outline
#0” or 9 visible characters. Although UI.Text + Outline + Shadow is 5X slower than TextMeshPro, the time (ms) is still small enough where the device is still hitting 60 fps.
Here are the results of a previous test done on my Desktop PC several months ago.

This is the text / rendering results for this older test.
Top text is UI.Text bottom is TextMeshPro.
I have no data on how UITextEffect compares both from a visual and performance stand point.
This information only covers the rendering and performance differences between UI.Text and TextMeshPro. TextMesh Pro offers a lot more functionality in terms of text formatting options and layout. It now includes over 36 rich text tags including support for multiple fonts and sprites per text object, font fallback, stylesheet, hyperlink support, etc…
Here is a simple example of the Multi Font & Sprites functionality which is in the latest release (again only available on the user forum at this time and soon to be released on the Asset Store).

The reveal FX is done by using the .maxVisibleCharacters property which is a simple integer that controls how many characters should be visible. This does not involve any string operation (ie. GC free), ensures the text word wraps correctly all the time and works with all rich text tags and alignment options.
Hopefully, I provided you with information that will help you get a better idea of how TextMesh Pro compares to UI.Text and potential ways to deal with text with an outline. Should you have any questions, please feel free to ask.