My quick testing, using ArcGIS 10.2.2 for Desktop on Windows 7 SP1, indicates that Intersect is faster than Spatial Join.
This test, run from IDLE:
import arcpy,time
if not arcpy.Exists(r"C:\temp\test.gdb"):
arcpy.CreateFileGDB_management(r"C:\temp","test.gdb")
if arcpy.Exists(r"C:\temp\test.gdb\fnPoly100"):
arcpy.Delete_management(r"C:\temp\test.gdb\fnPoly100")
if arcpy.Exists(r"C:\temp\test.gdb\fnPoly10000"):
arcpy.Delete_management(r"C:\temp\test.gdb\fnPoly10000")
if arcpy.Exists(r"C:\temp\test.gdb\fnPoint10000"):
arcpy.Delete_management(r"C:\temp\test.gdb\fnPoint10000")
arcpy.CreateFishnet_management("C:/temp/test.gdb/fnPoly100","0 0","0 1","1","1","10","10","#","NO_LABELS","#","POLYGON")
arcpy.CreateFishnet_management("C:/temp/test.gdb/fnPoly10000","0 0","0 1","0.1","0.1","100","100","#","LABELS","#","POLYGON")
arcpy.Delete_management(r"C:\temp\test.gdb\fnPoly10000")
arcpy.Rename_management("C:/temp/test.gdb/fnPoly10000_label","C:/temp/test.gdb/fnPoint10000","FeatureClass")
if arcpy.Exists(r"C:\temp\test.gdb\SpatialJoinResult"):
arcpy.Delete_management(r"C:\temp\test.gdb\SpatialJoinResult")
start = time.clock()
arcpy.SpatialJoin_analysis("C:/temp/test.gdb/fnPoint10000","C:/temp/test.gdb/fnPoly100",
"C:/temp/test.gdb/SpatialJoinResult",
"JOIN_ONE_TO_ONE","KEEP_ALL",
"""Shape_Length "Shape_Length" false true true 8 Double 0 0 ,First,#,C:/temp/test.gdb/fnPoly100,Shape_Length,-1,-1;Shape_Area "Shape_Area" false true true 8 Double 0 0 ,First,#,C:/temp/test.gdb/fnPoly100,Shape_Area,-1,-1""",
"INTERSECT","#","#")
elapsed = (time.clock() - start)
print("Spatial Join took " + str(elapsed) + " seconds")
if arcpy.Exists(r"C:\temp\test.gdb\IntersectResult"):
arcpy.Delete_management(r"C:\temp\test.gdb\IntersectResult")
start = time.clock()
arcpy.Intersect_analysis("C:/temp/test.gdb/fnPoint10000 #;C:/temp/test.gdb/fnPoly100 #",
"C:/temp/test.gdb/IntersectResult","ALL","#","INPUT")
elapsed = (time.clock() - start)
print("Intersect took " + str(elapsed) + " seconds")
yielded these results:
Spatial Join took 3.13998451416 seconds
Intersect took 2.3185308145 seconds
I ran my test with the Intersect first a few times, and then the Spatial Join first a few times, and Intersect was always the winner on this data.