Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
1

Request.BinaryRead() Чо возвращает subj в jscript ?

12.01.2008, 10:29. Просмотров 4475. Ответов 44
Метки нет (Все метки)

Чо возвращает subj в jscript ? (какой объект)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2008, 10:29
Ответы с готовыми решениями:

Требуется проверить вызывался ли Request.Form перед тем как вызвать Request.BinaryRead
Требуется проверить вызывался ли Request.Form перед тем как вызвать...

Как ускорить Request.BinaryRead ?
Всем привет! Господа-программеры, нарисовалась интереснейшая проблемка!!!...

почему Request.BinaryRead так тормозит ?
Привет Может сталкивался кто почему при аплоаде файлов метод...

Невозможно применить семейство Request.Form после вызова BinaryRead
Добрый день, подскажите, кто знает! Загружаю с помощью кода файл, после чего...

Возможно ли как то реализовать subj путем совмещения LIKE и IN?
Возможно ли как то реализовать subj путем совмещения LIKE и IN? А, то как то...

44
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
16.01.2008, 03:02  [ТС] 21
Такой дурной вопрос: А почему ?
К примеру на CGI (в С++), что бинарные данные, что текстовые разницы никакой, соответсвенно и скорость на этом не теряется.
0
Sergik
16.01.2008, 09:39 22
потому что:
Код
for i=1 to 10
response.write(i)
next
или
Код
response.write('12345678910')
как думаешь, что быстрее выполнится? поэтому и тормозит
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 06:46  [ТС] 23
А если:
Код
s=new String();
for(i=0;i<nn;i++) s+=i;
Response.Write(s);
То что будет медленнее и насколько ?
Естественно что Response.Write() медленная операция, я могу и на ADO так же сделать и потери в скорости будут нисколько не меньше.
Так вы настаиваете что ADO это более быстрее, чем деление и сложение. (Если это же написать на С++ и протестировать, то думаю что выигрыш будет не за ADO)!

Кстати у меня тут ещё одна проблемка возникла, функция на JScript переводящая уникод в символ ?(на ту что написана в MSDN выдаётся ошибка, что такое свойство объектом не поддерживается)
0
Sergik
17.01.2008, 09:51 24
допустим файл состоит из тысячи символов (примерно 1 Кб), тебе нужно выполнить тысячу раз операцию преобразования символа в текстовый вид (сама по себе эта операция не быстрая), или же ты можешь преобразовать весь текст за одну операцию через ADO, мне, например, очевидно, что второй вариант будет быстрее; если есть сомнения, то можно просто проверить
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 11:23  [ТС] 25
Тогда вопрос ещё тупее : А как по-твоему делает ADO? они что новый способ преобразования Unicode в текст изобрели ?
0
Sergik
17.01.2008, 11:35 26
если рассуждать как ты, то в конце концов придем к тому, что машинные коды у всех процессоров одинаковы, и все программы работают одинаково быстро.
Тупой ответ: это работает быстрее, потому что таковы результаты тестов
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 11:41  [ТС] 27
Это уже ближе к правде, а то пытаешся меня всякой чушью типа циклов забить, так бы сразу и сказал, что это к технологии относится.
С JScriptom я так и не разобрался, всё мучаюсь на функциях VBScript'a. Я думаю дискуссию продолжать не стоит, тем более, что я не первый с такой проблемой столкнулся, а решения так никто и не дал.

Приятно было пообщаться!
если в online можем поговорить и по аське.
0
Sergik
17.01.2008, 11:45 28
цикл - это не чушь, для меня такое объяснение было бы достаточным, я бы сразу понял что одна команда выполниться быстрее нескольких тысяч и не задавал бы тупых вопросов
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 11:53  [ТС] 29
Код
sleep(2000);
и
Код
for(i=0;i<2000;i++){;}
что быстрее работает?
одна команда или 2000 ?
Зачем городить чепуху ... ты уверен что внутри ADO 1 команда ?
Когда я сказал про технологию я имел ввиду низкоуровневость выполнения команд, а не кол-во выполненных.
0
Sergik
17.01.2008, 11:58 30
sleep(2000) - это задержка на 2 секунды, как она может работать быстрее или медленнее? и при чем здесь С? ты на заголовок форума лучше посмотри
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 12:01  [ТС] 31
Я это к тому, что одна команда может выполнится и быстрее и медленнее, чем тысяча команд.

И если ты этого не понимаешь, то что ты делаешь на форуме ?
Для продолжения дискуссии выходи на мою аську.

EndTopic.
0
t1k
3 / 3 / 5
Регистрация: 10.05.2007
Сообщений: 1,617
17.01.2008, 12:36 32
2 Andir:

Твой пример неправильный, с чего ты взял что пустой оператор это sleep(1)? это мягко говоря неверно.

Такой пример более правильный

for(i=0;i<2000;i++){sleep(1);}

В случае же VBScript, проблема в следующем. Нельзя быстро обратиться к n-му элементу строки. Для этого применяется функция Mid, т.е. в случае например 10-ти килобайтовой строки, она вызовется 10000 раз. И при этом каждый раз строка копируется в стек, т.е. параметр передается по значению (не факт конечно что не по ссылке).

А в случае например реализации конвертации на C, n-й элемент строки можно быстро получить с помощью указателей.

В этом и получается существенный выигрыш. Т.к. для того чтобы сконвертить бинарный массив надо сконвертить каждый его элемент, но если в VB или в С его можно представить как массив и быстро обработать, то в VBScript это строка (хоть и не строка VBScript).
0
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 12:53  [ТС] 33
2 t1k:

Абсолютно с тобой согласен, только насчёт примера ты не понял. В предыдущем топике некий Sergik мне заявил, что одна команда выполняется быстрее чем 1000, с чем я категорически не согласен, всё зависит от реализации функций. интерпретаторов и компиляторов.

Из-за того, что ADO реализована на более продвинутом языке чем JScript, то согласен её команды выполняются быстрее, но если уж так гнаться за скоростью, то вся изящность решения пропадает, особенно если не можешь решить проблему на одном языке, решаешь её на другом.
А может всё проще можно сделать на 'родном', хотя если реализация функции спрятана в библиотеке, то в принципе различий и не видно.
0
Sergik
17.01.2008, 13:01 34
я говорил, что одна команда response.write выполнится быстрее 1000, т.е. я говорил об однотипных команд (а не о разных, которые мне в пример приводили) и дело даже не в том, что в ADO эта функция быстрее работает, а в том, что ее надо вызвать только один раз, благодаря этому мы экономим время на сам вызов функции и время на промежуточные операции (увеличение счетчика цикла и т.п.).
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
18.01.2008, 08:03  [ТС] 35
смотри выше.
Я наглядно показал что вместо нескольких Response.Write() можно использовать одну.
А ещё лучше прочитай, что сказал t1k (разве Response.Write() там имеет значение ?)

И всё таки я думаю в аське было бы лучше.
0
ulu
20.01.2008, 18:46 36
собсно, я хотел вернуться к изначальной теме дискуссии и поделиться своим опытом. у меня оказалось примерно так:
Код
For i=1 To Request.TotalBytes
  tmp = Request.BinaryRead(1)
  tmp = Chr(Ascb(tmp))
  Result = Result & tmp
Next
не спрашивайте меня, почему (и почему это лучше, чем все остальное) -- я это методом проб и ошибок сделал
мне почему-то кажется, что на JScript будет примерно так же..

что касается типа данных, которые возвращает Request.BinaryRead, эта штука хоть и имеет название в VBScript, а толку от этого никакого..
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
21.01.2008, 07:01  [ТС] 37
2 ulu
thk конечно, но собсно дискуссия была не по поводу VBScript, а по поводу реализации этого на Jscript, там не всё так просто как хотелось бы ... (см. топики выше)

Хочу на JScript !!!!, Andir
0
dimzon
23.01.2008, 12:38 38
Код
Кароче, рассказываю что к чему
============================================

Что вертает Response.BinaryRead
--------------------------------------------
Возвращается переменная типа VARIANT (см. MSDN) c подтипом 
VT_VECTOR|VT_UI1 - т.е. массив байт. К сожалению JavaScript с таким типом работать не может вообще - ( ну не может он !), а возможности VBScript-а сильно ограничены

Что быстрее работает - преобразование через ADO или циклом на VBS

--------------------------------------------
Через ADO быстрее - так как ADO во первых написан на C++, а во вторых использует функцию API MultiByteToWideChar (см. MSDN) - а уж она работает максимально быстро!

Когда у меня возникла подобная проблема я использовал метод, похожий
на использование ADO, но только вместо ADODB.Recordset использовал
MSXML2.FreeThreatedDOMDocument.3.0 (сырец счас не найти, а воспроизводить ломает) 

Через скрипт получится охy-й тормоз потому как:
 - это итрерпретатор
 - при выполнении конструкции s = s + char выполняется ПЕРЕВЫДЕЛЕНИЕ памяти(VirtualAlloc) - достаточно долгая операция, и если у вас строка = 1 кб то ПЕРЕВЫДЕЛЕНИЕ произойдёт 1024 раза !!!

===============================================
THE END
Sergik
23.01.2008, 12:46 39
вырезка №1

The BinaryRead method retrieves data sent to the server from the client as part of a POST request. This method retrieves the data from the client and stores it in a SafeArray. A SafeArray is an array that contains information about the number of dimensions and the bounds of its dimensions.

вырезка №2

VBArray Object Language Reference
Version 3
Description
Provides access to Visual Basic safe arrays.
Syntax
new VBArray(safeArray)
The safeArray is a VBArray value

То есть если судить из документации, то возвращается джаваскриптовский тип VBArray, правда корректно получить его из jscript у меня не получилось
dimzon
23.01.2008, 12:50 40
Вот как надо:
Код
var objVBArray = new VBArray(Request.BinaryRead(...));
т.е. возвращается переменная типа VARIANT, а чтоб с ней работать из JavaScript её надо обернуть 'презервативом' - объектом VBArray...
23.01.2008, 12:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2008, 12:50

не работает [If (Request.QueryString('Submit') = 'Оформить заказ') ],т.е. Request.QueryString('Submit') не выдает значение.
Помогите ,пожалуйста!!!!!!! Я только учусь ASP есть у меня проблема в том,что...

ASP Jscript Access
Здравствуйте не подскажете как мне настроить БД ACCESS для того чтобы можно...

Проверка значения в JScript
Вынужден был столкнуться с ASP, с которым дел ранее не имел, и вот какая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru