Таймер до и после.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

posemon
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 02.12.2005 (Пт) 21:23
Откуда: Украина

Таймер до и после.

Сообщение posemon » 29.12.2006 (Пт) 10:43

Доброе утрО!
Код: Выделить всё
Dim a As Double
        Dim time As Double
        a = udBox.Value * 3000
        Dim i As Double
        Dim ans As Double
        btnRun.Visible = False
        btnExit.Visible = True
        chkBox.Visible = True

        Dim t As Double     
         t = 1
/////Нужно посчитать сколько времени пройдет после начала циклы////
        For i = 1 To a Step t
            If chkBox.CheckState = CheckState.Checked Then Exit For
            System.Windows.Forms.Application.DoEvents()
            ans = (1 + 1 / i) ^ i
            System.Windows.Forms.Application.DoEvents()
            txtBox.Text = CStr(ans)
            System.Windows.Forms.Application.DoEvents()
            prgBar.Value = (i / a) * 100
            System.Windows.Forms.Application.DoEvents()
        Next
\\\\\\Вот тут в конце вывести время или продолжительность цикла\\\\
        btnRun.Visible = True
        btnExit.Visible = True
        chkBox.Visible = False
        chkBox.CheckState = CheckState.Unchecked


Подскажите пожалуйста!

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 29.12.2006 (Пт) 11:12


posemon
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 02.12.2005 (Пт) 21:23
Откуда: Украина

Сообщение posemon » 29.12.2006 (Пт) 12:13

как посмотрел это на си, а на vb.net можно?

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 29.12.2006 (Пт) 14:11

posemon
это на C#
возьми и переведи :roll:
если какой-то момент не знаешь спрашивай

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

Сообщение Viper » 29.12.2006 (Пт) 14:12

Всех то делов правильно объявить QueryPerfomanceConter и QueryPerfomanceFrequency. Или это и есть трабла?
Весь мир матрица, а мы в нем потоки байтов!

posemon
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 02.12.2005 (Пт) 21:23
Откуда: Украина

Сообщение posemon » 29.12.2006 (Пт) 15:08

это и есть трабла...

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

Сообщение Viper » 30.12.2006 (Сб) 7:14

нды... а почитать вдумчиво MSDN религия не позволяет? держи:

Код: Выделить всё
Private Declare Function QueryPerformanceCounter Lib "kernel32" (ByRef lpPerformanceCount As Long) As Integer
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (ByRef lpFrequency As Long) As Integer


Это простой вариант, посложнее, но и эффективнее через атрибут DllImport. Смотреть MSDN!
Весь мир матрица, а мы в нем потоки байтов!

posemon
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 02.12.2005 (Пт) 21:23
Откуда: Украина

Сообщение posemon » 30.12.2006 (Сб) 9:32

можете последнее, помогите переведите класс

Код: Выделить всё
using System;
using System.Runtime.InteropServices;

namespace Utils
{
    /// <summary>
    /// Эта структура позволяет подсчитать скорость выполнения кода одним из
    /// наиболее точным способов. Фактически вычисления производятся в тактах
    /// процессора, а потом переводятся в милисекунд (десятичная часть
    /// является долями секунды).
    /// </summary>
    public struct PerfCounter
    {
        Int64 _start;

        /// <summary>
        /// Начинает подсчет вермени выполнения.
        /// </summary>
        public void Start()
        {
            _start = 0;
            QueryPerformanceCounter(ref _start);
        }

        /// <summary>
        /// Завершает полсчет вермени исполнения и возвращает время в секундах.
        /// </summary>
        /// <returns>Время в секундах потраченое на выполнение участка
        /// кода. Десятичная часть отражает доли секунды.</returns>
        public float Finish()
        {
            Int64 finish = 0;
            QueryPerformanceCounter(ref finish);

            Int64 freq = 0;
            QueryPerformanceFrequency(ref freq);
            return (((float)(finish - _start) /(float)freq));
        }

        [DllImport("Kernel32.dll")]
        static extern bool QueryPerformanceCounter(ref Int64 performanceCount);

        [DllImport("Kernel32.dll")]
        static extern bool QueryPerformanceFrequency(ref Int64 frequency);
    }
}

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

Сообщение Viper » 30.12.2006 (Сб) 9:53

И чего тут переводить?

Код: Выделить всё
Imports SupportLib, System.Math, BeamLib, System.IO
Imports System, System.Runtime.InteropServices
Namespace Utils
    ''' <summary>
    ''' Эта структура позволяет подсчитать скорость выполнения кода одним из
    ''' наиболее точным способов. Фактически вычисления производятся в тактах
    ''' процессора, а потом переводятся в милисекунд (десятичная часть
    ''' является долями секунды).
    ''' </summary>
    Public Structure PerfCounter
        Public _start As Int64

        ''' <summary>
        ''' Начинает подсчет вермени выполнения.
        ''' </summary>
        Public Sub Start()       
            _start = 0
            QueryPerformanceCounter(_start)
        End Sub

        ''' <summary>
        ''' Завершает полсчет вермени исполнения и возвращает время в секундах.
        ''' </summary>
        ''' <returns>Время в секундах потраченое на выполнение участка
        ''' кода. Десятичная часть отражает доли секунды.</returns>
        Public Function Finish() As Single
            Dim _finish As Int64 = 0
            QueryPerformanceCounter(_finish)

            Dim freq As Int64 = 0
            QueryPerformanceFrequency(freq)
            Return CSng(_finish - _start) / CSng(freq)
        End Function

        <DllImport("Kernel32.dll")> Private Shared Function QueryPerformanceCounter(ByRef performanceCount As Int64) As Integer
        End Function

        <DllImport("Kernel32.dll")> Private Shared Function QueryPerformanceFrequency(ByRef frequency As Int64) As Integer
        End Function
    End Structure
End Namespace


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

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.12.2006 (Сб) 10:01

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

posemon
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 02.12.2005 (Пт) 21:23
Откуда: Украина

Сообщение posemon » 31.12.2006 (Вс) 14:35

Спасибо всем!

И с наступающим!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 31.12.2006 (Вс) 15:31

Эх, а ведь в Google перевод можно легко найти!

http://blogs.gotdotnet.ru/personal/gaid ... 0f38cd3624
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52

    TopList