I see there's a good question already for general polygons here. Are there any simpler or more efficient algorithms specific to quadrilaterals?
Nope. I'd use the formula in the post you mention.
Edits:
To elaborate on that a lot, the method presented in the post you mention (called the Closed Polygon Approach in Reed Copsey's answer) DOES end up breaking the list of points into triangles and calculating their areas using cross products. It gets away with not triangulating anything by taking advantage of both positive and negative areas, according to the ordering (winding) of the points that describe the polygon. Because it takes advantage of both positive and negative areas, this approach does not require any calculations for the lines that make up each triangle in the quadrilateral, and it does not matter if the quadrilateral is convex or not.
That said, it is easier to conceptually understand breaking up the quadrilateral into two non-overlapping triangles, and independently calculating the area of each triangle. This approach will always yield the correct result as well. The complication for this approach comes in deciding which pair of opposing vertices should specify the break between the two triangles. If you have a non-convex quadrilateral and choose the wrong triangulation, then you end up with overlapping triangles that (unless accounted for) will skew the area result. If some care is taken in calculating these triangles' areas, you will find that (in the case specifically of a quadrilateral) one triangle will always be contained in the other. With some cleverness, you can get the contained triangle's area to have the opposite sign of the containing triangle's area, which will then again yield the correct result.
In essence, these two algorithms are the same. There is no performance difference; suppose the quad is specified by x0, y0, x1, y1, x2, y2, x3, and y3. Then the closed polygon approach has the following operations:
area = 0.5 * abs( x0 * y1 - x1 * y0 + x1 * y2 - x2 * y1 +
x2 * y3 - x3 * y2 + x3 * y0 - x0 * y3 )
Which may be simplified as:
area = 0.5 * abs( x0 * (y1 - y3) + x1 * (y2 - y0) + x2 * (y3 + y1) +
x3 * (y0 - y2) )
Which works out to (count the *'s and +'s) 12 operations altogether. The other approach, finding each individual triangle and taking the cross product works as follows:
x2_line = x2 - x0
y2_line = y2 - y0
area = 0.5 * abs( (x1 - x0) * y2_line + (y1 - y0) * x2_line +
x2_line * (y3 - y0) + y2_line * (x3 - x0) )
Which may again be simplified to:
x2_line = x2 - x0
y2_line = y2 - y0
area = 0.5 * abs( y2_line * (x1 - x0 + x3 - x0) + x2_line * (y1 - y0 + y3 - y0) )
Which also works out to 12 operations. The exact same number of operations.
So, the biggest difference is that the triangulation followed by cross-product area calculation is easier to understand, in that it is very straightforward, whereas the Closed-Polygon approach is really just the same algorithm, but optimized and thus presented in a different way.
In conclusion, yes, the formula in the post you mention is the most efficient one you've got, and is at the same time the simplest algorithm, when presented differently.
For a (convex) quadrilateral, it's often faster to just split the quad into two triangles, and compute the area of the two triangles.
If the quadralateral is not guaranteed convex, the closed polygon approach is still my preference, since it's usually faster than the checks to figure out how to correctly split the quad.
Edit from Comments:
As Walt W points out, the two approaches are theoretically identical in terms of performance. The second is more flexible, due to not requiring convex quads, but the first (splitting triangles) is easier to implement as well as understand, so potentially more maintainable.
Break the quadrialateral into two triangles and calculate the area of both.
Once you have two triangles, Heron's Formula works well within a computer program.
For a triangle with sides a, b, and c, the area is
double area = Math.Sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c)/16);
This method works with any quadrilateral whether it is a rectangle, square, rhombus, or trapezoid.