Помогите расчитать время выполнения программы.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Elektronbrain
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 29.01.2007 (Пн) 17:47

Помогите расчитать время выполнения программы.

Сообщение Elektronbrain » 30.01.2007 (Вт) 16:24

Мне очень нужна помощь в решении задачи.
Мне просто кровь из носу нужно знать хотя бы примерный ответ.
Вот сама задача:
Нужно расчитать сколько времени понадобится компьютеру(конфигурация приведена ниже) для обработки следующего алгоритма:
Имеется текстовый документ, содержащий примерно следующий текст:
552 624 232 223 323 642 433
552 622 423 523 623 662 664
455 434 632 432 424 432 462 (числа могут быть любыми от 111 до 999, важно их количество в файле, а не значение. И таких трёхзначных чисел два миллиарда).
Алгоритм следующий:
1. программа берёт первое число.
2. к взятому числу программа 453 раза прибавляет число 346 (я понимаю, что проще умножить, но нужно именно прибавить 453 раза подряд, а не умножить).
3. полученное после сложений число, записывается в первую строку нового чистого текстового документа.
4. программа берёт второе число.
5. проделываются те же операции, что и в пунктах 2 и 3 (результаты последующих сложений дописываются рядом с предыдущими в новый документ).
И так далее пока не будут перебраны все два миллиарда чисел.

Конфигурация компьютера на котором будет выполняться программа:
Процессор Intel celeron 700 MHz
Оперативная память 128 Mb
Материнская плата самая простенькая которая поддерживала бы данный процессор и оперативку.
Все остальные детали самые обычные.
Заранее спасибо.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.01.2007 (Вт) 16:30

Неужели хвосты до сих пор досдают? :roll:
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 30.01.2007 (Вт) 17:41

Без эксперимента не обойтись.

Формируешь файл с 200 тысячами (цифру взял с потолка) трехзначных чисел, реализуешь написанный алгоритм и засекаешь время выполнения.
Потом умножаешь это время на 10000.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 30.01.2007 (Вт) 19:54

Думаю должны давать какую-то теорию бьясняющую быстродействие, как то сложение пары чисел - один такт. Тогда программа должна считаться идеальной, а результат получаться оценочным. Нам такую теорию не давали, но думаю при наличии нужных конспектов должно решаться влёт. Иначе такую задачу просто не дали бы. И не вводили бы таких ограничений.

Elektronbrain
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 29.01.2007 (Пн) 17:47

Сообщение Elektronbrain » 31.01.2007 (Ср) 12:13

Ну что вы все загадками говорите? Кто нибудь знает, какими будут хотя бы приблизительные результаты?
Для меня это всё тёмный лес, поэтому и обратился за помощью.
Нет у меня никаких конспектов и взять мне их не откуда.
Мне не надо полный алгоритм, мне хочется знать только окончательный ответ.
Условия задачи я привёл полностью. Никаких дополнительных данных не имеется.
У меня осталось мало времени. Помогите пожалуйста.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 31.01.2007 (Ср) 13:04

Поскольку из постов автора следует, что ему требуется решить "нечто заданное на дом", то ... читаем таки правила.
Весь мир матрица, а мы в нем потоки байтов!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 31.01.2007 (Ср) 13:04

Примерный ответ - примерно несколько минут или часов. Чтобы дать более конкретный ответ, нужно знать теорию, на основании которой составлена задача. У вас ее нет, у нас тем более. Так же у нас нет той рухляди, на которой должен быть обкатан алгоритм. Никаких загадок.

И вообще-то нам плевать с высокой колокольни сколько там времени у кого осталось.
Лучший способ понять что-то самому — объяснить это другому.

Elektronbrain
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 29.01.2007 (Пн) 17:47

Сообщение Elektronbrain » 31.01.2007 (Ср) 15:10

!Viper! писал(а):Поскольку из постов автора следует, что ему требуется решить "нечто заданное на дом", то ... читаем таки правила.

А где вы интересно в моих постах увидели намёк на то, что это домашнее задание? Я уже отучился слава богу. Мне это нужно для личного пользования. Неужели нельзя просто так взять и помочь?
Я конечно понимаю, что данных очень мало. И описание алгоритма слишком обобщённое, но можно ли исходя из этих данных, дать ответ с точностью +\- 15 минут?
Последний раз редактировалось Elektronbrain 31.01.2007 (Ср) 15:21, всего редактировалось 1 раз.

Elektronbrain
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 29.01.2007 (Пн) 17:47

Сообщение Elektronbrain » 31.01.2007 (Ср) 15:18

Antonariy писал(а):Примерный ответ - примерно несколько минут или часов. Чтобы дать более конкретный ответ, нужно знать теорию, на основании которой составлена задача. У вас ее нет, у нас тем более. Так же у нас нет той рухляди, на которой должен быть обкатан алгоритм. Никаких загадок.

И вообще-то нам плевать с высокой колокольни сколько там времени у кого осталось.

Легко конечно судить человека с колокольни высотой в 1757 сообщений.
Но только ваш, незнаю правда какой, опыт не даёт права плевать на других.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 31.01.2007 (Ср) 15:24

Тогда возникает естественный вопрос: где же это может пригодиться практически?

Просто так взять и помочь можно, но не всегда на это есть время и желания, так что звиняйте... Кстати, пост от Amed имеет смысл. Это пожалуй наиболее действенный способ прикинуть время выполнения.

З.Ы. Два миллиарда слов из трех символов - это 6 миллиардов байт (не считая пробелов или каких-то других разделяющих символов). Файл получается в 6 гигов. Далее после всех описанных операций получится другой файл, мягко говоря знасительно большего размера (ибо полученное число вполне может быть 9-ти значным). И как все это будет вертеться на заданной конфигурации?
Весь мир матрица, а мы в нем потоки байтов!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 31.01.2007 (Ср) 15:58

P4 3Gz, 1Gb и 2,000,000 строк в исходном файле ~50 секунд.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 31.01.2007 (Ср) 16:11

!Viper! писал(а):Далее после всех описанных операций получится другой файл, мягко говоря знасительно большего размера (ибо полученное число вполне может быть 9-ти значным). И как все это будет вертеться на заданной конфигурации?


Все числа получаются 6-и значными. Выходной файл будет ~14 Gb.
Расчетное время на моей машине ~120 минут. :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 31.01.2007 (Ср) 16:21

Для 2 000 000 без записи и чтения (!!!) в/из файл выполняется за 3 секунды. Конфигурация: P4, 3,4Гц(двухядерный процессор) и 2 ГБ оперативки. Если добавить чтение/запись да учесть, что в задаче не 2 000 000, а 2 000 000 000, то увеличение времени выполнения будет очень значительное. Тем более на конфигурации заданной автором. Это будут часы.
Весь мир матрица, а мы в нем потоки байтов!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 31.01.2007 (Ср) 16:31

В общем, вот код моего теста.
Компилировать надо в Native-code (разница по скорости в 4-ре раза).
После последней оптимизации 2,000,000 строк за ~40 секунд.

Осталось найти старую машину и пробовать на ней...

Код: Выделить всё
Public Sub Main()
    Dim fso As New Scripting.FileSystemObject
    Dim tr As Scripting.TextStream, tw As Scripting.TextStream
    Dim s As String, ss As String, sss As String
    Dim k As Long, i As Integer, j As Integer
    Dim t As Single

    t = Timer
    sss = Space(48)
    Set tr = fso.OpenTextFile(App.Path & "\TestIn.txt", ForReading)
    Set tw = fso.OpenTextFile(App.Path & "\TestOut.txt", ForWriting, True)
    Do Until tr.AtEndOfStream
        ss = tr.ReadLine
        If Len(ss) >= 27 Then
            For i = 1 To 7
                k = CLng(Mid$(ss, i * 4 - 3, 3))
                For j = 1 To 453
                    k = k + 346
                Next j
                Mid$(sss, i * 7 - 6, 6) = CStr(k)
            Next i
            tw.WriteLine sss
        End If
    Loop
    tw.Close
    tr.Close
   
    MsgBox "Time=" & Format$(Timer - t, "#,##0.000"), vbInformation
End Sub
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Elektronbrain
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 29.01.2007 (Пн) 17:47

Сообщение Elektronbrain » 31.01.2007 (Ср) 16:46

Всем огромное человеческое спасибо! Разброс в ответах конечно велик, но он не превышает задуманных рамок.
А теперь собственно то, для чего это надо:
Я придумываю программу (не спрашивайте какую, это пока тайна). А данный тест позволил определить скорость её выполнения (примерное время).


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: The trick и гости: 2

    TopList