The ability to create city/province/country shapefiles of your data with the click of a button (instead of a lot of technical and manual work) is certainly something every GIS-user would want.
Therefore I suggest my own free/independently created software called "Easy Georeferencer" which is simple, easy to use, and yet powerful (see screenshot at the bottom of the post).
The program is simple and straight-forward to use, and is run directly from an exe file requiring no installation. You can choose to geocode between the GNS or GeoNames datasource, and you can do what no other geocoder so far can do, geocode provinces based on the GADM administrative units database, as well as geocode historical country borders from the CShapes dataset. The only caveat is that it does not geocode address data. All outputs come as shapefiles ready for immediate visualization/analysis in a GIS.
As far as regards efficiency and handling of large data, the program has been tested to geocode 100 000 records in only 3 hours. For larger datasets the expected increase in processing time should drop curvilinearly because much of the processing time goes only to the initial phase when the country reference datasets are loaded, but picks up afterwards. Also, one does not have to worry about internet bottle-necks or connectivity issues when geocoding large datasets because the software, reference datasets, and processing are all based on the local computer. Match rates can get up to 80-90 percent because it is based on fuzzy-name matching accounting for spelling differences.
More details, including an introductory paper and beginner's guide are included in the download package. No need to be hesitant about trying it, the program is just a simple file that you can place and run on your desktop without any commitment or cluttering of your computer.
The software can be downloaded from: http://geocodeanything.wordpress.com/
Hope that helps.