FEMAP v11.3 which was just released has a new method, feResultsRankingToDataTable(...), on the application object which will allow you to populate the Data Table with the Ranking results. You could then use the Data Table object to retrieve that information.
If you don't want to do that though, and you are seeing unacceptable performance... what objects are you using? For something like this you should definitely look at using the Results Browsing object and one of the "bulk" retrieval methods (GetRows( ), GetColumns( ), etc...). The key to performance is often minimizing the number of API calls you are making. The COM functionality used by the API provides fantastic capability to link different languages and programs, but it does come with significant overhead.
If you are simply trying to find the max stress across the plys for each element why not just use the Results Browser object. Add columns for all of the stresses you want to consider, for all of the plys, for all elements. Then, add an envelope column. When you Populate( ) the ojbect, the envelope column will be filled with max values for each element. You can then just retrieve the data from that one column and find the top 50 (or however many you need). If it helps, you could add the data to a Sort object, sort it and then it will be easy to find the top values.