Извлекать данные из 60 000 идентификаторов Facebook менее чем за 6 часов? - PullRequest
0 голосов
/ 16 января 2012

Я загрузил идентификаторы профиля Faceboojk всех наших фанатов Facebook в базу данных доступа и написал функцию для извлечения данных о локали из API графика Facebook.Вот пример графика api: -

http://graph.facebook.com/665117534

Мой код просматривает каждую запись и извлекает данные из API следующим образом: -

    Function fbl(fb_user_id As String) As String
    Dim oXMLHTTP As Object, i As Long, vFF As Long, oResp() As Byte
    Dim FB_URL As String
    Dim fb_user_data As String

    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    FB_URL = "http://graph.facebook.com/" & fb_user_id

    oXMLHTTP.Open "GET", FB_URL, False
    oXMLHTTP.Send

    Do While oXMLHTTP.readyState <> 4
        DoEvents
    Loop

    fb_user_data = oXMLHTTP.responsetext

    n0 = InStr(1, fb_user_data, "locale") '
    If n0 = 0 Then
        locale_code = "PAGE"
    Else
        n00 = InStr(n0, fb_user_data, "}") '
        locale_code = Mid(fb_user_data, n0 + 6, n00 - n0)
        locale_code = Replace(locale_code, """", "")
        locale_code = Replace(locale_code, ",", "")
        locale_code = Replace(locale_code, " ", "")
        locale_code = Mid(locale_code, 5, Len(locale_code) - 6)
    End If

    fbl = locale_code

    Set oXMLHTTP = Nothing

End Function

Это работает нормально, но тестирование 100 записей заняло 35 секунд, что говорит о том, что вся таблица займет 5,6 часа.Являются ли они более эффективным и быстрым способом сделать это?

Спасибо

Джонатан

1 Ответ

0 голосов
/ 16 января 2012

Мой подход состоял в том, чтобы использовать многопоточное приложение C # с System.NET.Sockets и отключить алгоритм Nagle .

Я не видел много написанных высокопроизводительных вычислительных приложенийв VBA

Редактировать

Поскольку вы используете объект XMLHTTP, вам нужно пометить этот вопрос, чтобы отразить это.Вы можете получить лучший ответ от людей, которые знают этот API.

...