Remover objetos duplicados de uma matriz usando o javascript

Eu estou tentando descobrir uma maneira eficiente de remover objetos que são duplicados de uma matriz e procurando a resposta mais eficiente. Eu olhei ao redor da internet tudo parece estar usando dados primitivos ... ou não escalável para grandes matrizes. Esta é a minha implementação atual, que pode ser melhorada e tentar evitar rótulos.

 Test.prototype.unique = function (arr, artist, title, cb) {
        console.log(arr.length);
        var n, y, x, i, r;
        r = [];      
        o: for (i = 0, n = arr.length; i < n; i++) {

          for (x = 0, y = r.length; x < y; x++) {

                if (r[x].artist == arr[i].artist && r[x].title == arr[i].title) {
                    continue o;
                }
            }
            r.push(arr[i]);
        }

        cb(r);
    };

e a matriz é algo como isto:

[{title: sky, artist: jon}, {title: rain, artist: Paul}, ....]

Ordem não importa, mas se a classificação torna mais eficiente, então eu estou pronto para o desafio ...

e para pessoas que não sabem o é um rótulo e ele está apenas dizendo para voltar ao loop em vez de empurrar para o novo array.

Javascript puro por favor sem libs.

RESPOSTAS ATÉ ATRÁS:

O teste de desempenho para as respostas abaixo:http://jsperf.com/remove-duplicates-for-loops

questionAnswers(3)

yourAnswerToTheQuestion