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

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

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

Студворк — интернет-сервис помощи студентам
Чо возвращает subj в jscript ? (какой объект)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2008, 10:29
Ответы с готовыми решениями:

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

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

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

44
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
16.01.2008, 03:02  [ТС]
Студворк — интернет-сервис помощи студентам
Такой дурной вопрос: А почему ?
К примеру на CGI (в С++), что бинарные данные, что текстовые разницы никакой, соответсвенно и скорость на этом не теряется.
0
Sergik
16.01.2008, 09:39
потому что:
Code
1
2
3
for i=1 to 10
response.write(i)
next
или
Code
1
response.write('12345678910')
как думаешь, что быстрее выполнится? поэтому и тормозит
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 06:46  [ТС]
А если:
Code
1
2
3
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
допустим файл состоит из тысячи символов (примерно 1 Кб), тебе нужно выполнить тысячу раз операцию преобразования символа в текстовый вид (сама по себе эта операция не быстрая), или же ты можешь преобразовать весь текст за одну операцию через ADO, мне, например, очевидно, что второй вариант будет быстрее; если есть сомнения, то можно просто проверить
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 11:23  [ТС]
Тогда вопрос ещё тупее : А как по-твоему делает ADO? они что новый способ преобразования Unicode в текст изобрели ?
0
Sergik
17.01.2008, 11:35
если рассуждать как ты, то в конце концов придем к тому, что машинные коды у всех процессоров одинаковы, и все программы работают одинаково быстро.
Тупой ответ: это работает быстрее, потому что таковы результаты тестов
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
17.01.2008, 11:41  [ТС]
Это уже ближе к правде, а то пытаешся меня всякой чушью типа циклов забить, так бы сразу и сказал, что это к технологии относится.
С JScriptom я так и не разобрался, всё мучаюсь на функциях VBScript'a. Я думаю дискуссию продолжать не стоит, тем более, что я не первый с такой проблемой столкнулся, а решения так никто и не дал.

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

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

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

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

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

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

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

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

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

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

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

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

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

Хочу на JScript !!!!, Andir
0
dimzon
23.01.2008, 12:38
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Кароче, рассказываю что к чему
============================================
 
Что вертает 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
вырезка №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
Вот как надо:
Code
1
var objVBArray = new VBArray(Request.BinaryRead(...));
т.е. возвращается переменная типа VARIANT, а чтоб с ней работать из JavaScript её надо обернуть 'презервативом' - объектом VBArray...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2008, 12:50

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

request.getSession() возвращает NULL
Здравствуйте! Есть непонятная для меня проблема. Сохраняю в сессии параметр...

Проблема : request.getContentType возвращает null
такая вот ерунда, хотя прилежно пишу response.setContentType('text/html'). Помогите, кто может!

WCF возвращает Request Entity Too Large
Форумчане выручайте никак не могу победить WCF! В двух словах есть сервис который выгружает данные с БД. с клиента передаю массив(обычно...

Выборка данных из базы, request.getAttribute возвращает null
выборка данных из базы, хочу передать на jsp страницу и вывести, но при передаче request.getAttribute возвращает null сервлет ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru