I would use Mathematica Interpolation to generate interpolations of the two curves, and then use FindRoot to find the intersection, as shown below.
curve1 = Interpolation[ data1 ]; curve2 = Interpolation[ data2 ]; FindRoot[ curve1[x] - curve2[x], {x, bestguess} ]
Despite the thousands of points involved, interpolation is a very fast operation, and on my machine there is no noticeable delay between pressing shift + enter and returning Mathematica.
However, there is a warning. Since this is experimental data, the intersection itself will have uncertainty, and I suggest you use a suitable method designed to create this information, for example, found here . Although it is not immediately available, it should point you in the right direction.
source share