Вам нужно профилировать приложение, чтобы найти, что именно медленно: перебирая столбцы и сравнивая значения или находя совпадающие записи (строки), которые необходимо сравнить.
Что касается записи, решение может быть преобразовать таблицу в словарь. Это работает, если в ваших таблицах есть уникальный столбец, тогда вы можете преобразовать их в словарь, где ключ - это уникальное значение столбца для записи, а значение - целая строка. Затем выполните итерацию первого DataTable, получите уникальное значение столбца и получите строку из 2nd Datatable, но из словаря.
Если проблема заключается в сравнении двух строк, то лучше показать код, который можно увидеть, возможно, есть дополнительные сравнения или приведение. Трудно сказать без кода.
Для решения библиотеки меньше можно эмулировать использование Прототипа Try.these
довольно легко:
function newAjax() {
try { return new XMLHttpRequest(); } catch(){}
try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(){}
try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(){}
try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(){}
try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(){}
return false;
}
Вот полезная ссылка, и некоторый код (должен покрыть все основания),
var request = null;
function InitAJAX()
{
var objxml = null;
var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];
try
{
objxml = new XMLHttpRequest();
}
catch(e)
{
for (var i = 0; i < ProgID.length; i++)
{
try
{
objxml = new ActiveXObject(ProgID[i]);
}
catch(e)
{
continue;
}
}
}
return objxml;
}
request = InitAJAX();
Используйте jQuery (или подобная библиотека JavaScript). Это заботится о проблемах перекрестной совместимости браузера вещей как совершение звонков Ajax.
Например, с помощью вызова Ajax jQuery:
$.ajax({
url: 'document.xml',
type: 'GET',
dataType: 'xml',
timeout: 1000,
error: function(){
alert('Error loading XML document');
},
success: function(xml){
// do something with xml
}
});
Я предложил бы, чтобы следующий Sergey советовал или запись маленького, менее сложного патча для IE самостоятельно:
if(typeof window.XMLHttpRequest === 'undefined' &&
typeof window.ActiveXObject === 'function') {
window.XMLHttpRequest = function() {
try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
return new ActiveXObject('Microsoft.XMLHTTP');
};
}
Затем можно сделать
var req = new XMLHttpRequest;
даже в IE.
редактирование 18.02.2011: посмотрите это сообщение в блоге для объяснения позади нового выбора версий MSXML...
Используя примерно любой JavaScript Ajax библиотека предпочтительна для записи Вашей собственной платформы Ajax - если в этом суть. Вы могли бы хотеть проверить jQuery или Прототип, или MooTools или Dojo или [вставляют имя здесь] платформа, чтобы видеть, как они делают это, если Вы настаиваете на том, чтобы писать свое собственное.
Это - то, что я использую, это хорошо работает для меня:
function request()
{
try
{
try
{
return new ActiveXObject("Microsoft.XMLHTTP")
}
catch( e )
{
return new ActiveXObject("Msxml2.XMLHTTP")
}
}
catch(e)
{
return new XMLHttpRequest()
}
}
Используйте XMLHttpRequest.js - Стандартно-совместимый перекрестный браузер реализация объектов XMLHttpRequest и работайте с объектом в стандарте (W3C) путь
Я иду с предложением Cletus jQuery и также проверяю плагин Формы jQuery, очень мощный и простой использовать для быстрого преобразования форм для работы через Ajax.