Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 22:59   #1
Dequick
 
Регистрация: 11.09.2010
Сообщений: 9
Вопрос Assessment of run-time: C++ vs Visual Basic

Есть одинаковые программы, написанные на C++ и VB, структура вроде бы одинаковая в обоих случаях. Оценивал время выполнения. Использовал Visual Basic 2005EE и DEV C++:
VB
Код:
Imports System.Math
Module Module1
    Dim n_elems As Integer
    Dim arr() As Byte
    Dim arr_of_values() As Byte
    Dim str As String = ""
    Sub Main()
        Dim start As Double : start = Microsoft.VisualBasic.Timer
        Dim i As Byte
        Dim n As Byte = 5
        Dim a As Byte = 20
        ReDim arr(a)
        ReDim arr_of_values(a)

        n_elems = n
        For i = 0 To a
            arr_of_values(i) = i + 1
        Next i

        Call recursion(0, a - n + 1, 0)

        Console.WriteLine(str)
        Console.WriteLine("Done!  clock () time: " & Round(Microsoft.VisualBasic.DateAndTime.Timer - start, 10) & " second(s)")
        Console.ReadKey()
    End Sub
    Public Sub recursion(ByVal min As Int32, ByVal max As Int32, ByVal rec As Int32)
        Dim i As Byte
        Dim m As Byte

        For i = min To max - 1
            arr(rec) = i
            If rec = n_elems - 1 Then
                For m = 0 To n_elems - 1
                    str += arr_of_values(arr(m)) & " "
                Next m
                str += vbCrLf
                Continue For
            End If
            If i = max Then Exit Sub
            Call recursion(i + 1, max + 1, rec + 1)
        Next i
    End Sub
End Module
C++
Код:
#include <iostream>
#include <time.h>
#include <conio.h>
#define n 5
#define a 20
using namespace std;
void recursion(int, int, int);
int n_elems = n;
int arr[a];
int arr_of_values[a];

int main(int argc, char *argv[])
{//begin
    clock_t tStart;
    tStart =  clock ();
    
    for (int i=0;i<=a;i++)
    {//begin
    arr_of_values[i]=i+1;
    }//end;
        
    recursion(0,a - n +1,0);
    printf("Done!  clock () time: %.10f second(s)", double( clock () - tStart) /  double(CLOCKS_PER_SEC));
    getche();
    return EXIT_SUCCESS;
}//end
void recursion(int min, int max, int rec)
{//begin
    for(int i=min; i < max; i++)
    {//begin
        arr[rec] = i;
        if(rec == n_elems -1)
        {//begin
            for(int m = 0; m < n_elems; m++)
            {//begin
                cout << arr_of_values[arr[m]] <<" ";
            }//end;
            cout << endl;
            continue;
        }//end;
        if(i==max) break;
        recursion(i+1, max+1, rec+1);
    }//end;
}//end
Для VB при маленьких значениях a и n таймер ведет себя неадекватно, разброс по времени ~0,2 секунды. Но время выполнения вроде б одинаковое: для a=7 и n=4 , elapsed time~0.015 seconds.
При заданных в коде значениях a и n, на моей машине VB выигрывает примерно 1,5 секунды.
Насколько адекватна эта оценка?

Последний раз редактировалось Dequick; 18.12.2010 в 10:46.
Dequick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание компонентов Run Time Serebah Общие вопросы Delphi 13 08.12.2010 22:02
Run-Time Check Failure #3 Xe[N]o Общие вопросы C/C++ 2 27.11.2010 09:01
Заполнение cxLookupComboBox в run time fake2 БД в Delphi 0 17.05.2010 08:31
ActionManager - работа в run - time chingiz Компоненты Delphi 0 10.10.2009 08:48
Ошибка Run-Time error 13 DEZuv Microsoft Office Access 0 03.04.2009 12:25