[Plugin] [REL] Math Plugin
#26

Quote:
Originally Posted by ******
Посмотреть сообщение
WHAT? I think YOU need to look at what plugins are for and understand the difference between C++ and PAWN (and, more importantly, which is faster).
well sadly as much as my wording there failed - i meant plugin being FASTER, it is faster only when it comes to pure math functions.

pawn versions

Код:
	stock GetVehicleDriver(vehicleid) {
		
		for (new i; i<500; i++) {
			if (!IsPlayerConnected(i))
				continue;
			
			if (GetPlayerState(i) != PLAYER_STATE_DRIVER)
				continue;
			
			if (GetPlayerVehicleID(i) == vehicleid) {
				return i;
			}
		}
		return -1;
	}
c++ version:

Код:
int GetVehicleDriver(int vehicleid) {

    if ((vehicleid == 0) || (vehicleid == INVALID_VEHICLE_ID) || (vehicleid > MAX_VEHICLES))
        return INVALID_PLAYER_ID;

    int i;

    for (i = 0; i < max_players; i++) {

        if (invoke->callNative(&PAWN::IsPlayerConnected, i) == false) // no connected player in slot?
            continue;

            if (invoke->callNative(&PAWN::GetPlayerState, i) != PLAYER_STATE_DRIVER) continue; // not a driver of any vehicle?

            int thisplayervehid;
            thisplayervehid = invoke->callNative(&PAWN::GetPlayerVehicleID, i);

            // todo: maybe use IsPlayerInVehicle instead.

            if (thisplayervehid == vehicleid) // found a connected driver in this car.
                return i;

    }

    return INVALID_PLAYER_ID; // found no driver.

}
i'm using incognito's invoke, and for some reason in a benchmark my c++ version is 7x slower:

Код:
		#define MAXTEST 500
	 	
		new test1;
		test1 = GetTickCount();
		
		for(new a; a < 500; ++a) {
			MPGetVehicleDriver(1);
			//returnit(a);
		}
		
		printf("# MPGetVehicleDriver %d", GetTickCount() - test1);
	 	
		new test2;
		test2 = GetTickCount();
		
		for(new a; a < 500; ++a) {
			GetVehicleDriver(1);
		}
		
		printf("# GetVehicleDriver %d", GetTickCount() - test2);
Thanks to eXtreme for the tests and benchmark.

****** and other experts - any idea why the c++ version is slower? i managed to track down to invoke->callNative function.. so whenever i call sa-mp natives via invoke that's significantly slower than doing it in pawn (pure math functions work faster tho), so this is unacceptable to me.. if calling samp natives via invoke makes the whole thing slower than in pawn, i should just stop this project - there is no other option.

Also, full source: http://code.******.com/p/samp-mp/sou...e/#svn%2Ftrunk
Reply


Messages In This Thread
[REL] Math Plugin - by JernejL - 20.07.2011, 18:08
Re: WIP Math Plugin - by Calgon - 20.07.2011, 18:11
Re: WIP Math Plugin - by JernejL - 20.07.2011, 18:15
Re: WIP Math Plugin - by Donya - 20.07.2011, 18:15
Re: WIP Math Plugin - by Calgon - 20.07.2011, 18:17
Respuesta: WIP Math Plugin - by clavador - 20.07.2011, 18:20
Re: Respuesta: WIP Math Plugin - by JernejL - 20.07.2011, 18:21
Re: WIP Math Plugin - by Kyosaur - 20.07.2011, 19:30
Re: WIP Math Plugin - by Omega-300 - 20.07.2011, 19:45
Re: WIP Math Plugin - by Gamer_Z - 20.07.2011, 20:33
Re: WIP Math Plugin - by Jay_ - 20.07.2011, 20:40
Re: WIP Math Plugin - by gamer931215 - 20.07.2011, 22:16
Re: WIP Math Plugin - by JernejL - 20.07.2011, 22:18
Re: WIP Math Plugin - by Mauzen - 20.07.2011, 22:33
Re: WIP Math Plugin - by JernejL - 20.07.2011, 22:52
Re: WIP Math Plugin - by linuxthefish - 20.07.2011, 23:17
Re: WIP Math Plugin - by Famalamalam - 20.07.2011, 23:50
Re: WIP Math Plugin - by JernejL - 20.07.2011, 23:54
Re: WIP Math Plugin - by Whitetiger - 21.07.2011, 00:29
Re: WIP Math Plugin - by linuxthefish - 21.07.2011, 00:38
Re: WIP Math Plugin - by Famalamalam - 21.07.2011, 00:41
Re: WIP Math Plugin - by JernejL - 21.07.2011, 00:54
Re: WIP Math Plugin - by JernejL - 21.07.2011, 11:05
Re: WIP Math Plugin - by Babul - 21.07.2011, 14:01
Re: WIP Math Plugin - by samiras - 21.07.2011, 14:58
Re: WIP Math Plugin - by JernejL - 21.07.2011, 16:42
Re: WIP Math Plugin - by steki. - 21.07.2011, 17:36
Re: WIP Math Plugin - by wups - 21.07.2011, 20:35
Re: WIP Math Plugin - by Incognito - 22.07.2011, 13:20
Re: WIP Math Plugin - by samiras - 24.07.2011, 17:55
Re: [REL] Math Plugin - by dr.pepper - 14.08.2011, 18:11
Re: [REL] Math Plugin - by Blacklite - 16.08.2011, 10:21
Re: [REL] Math Plugin - by cyber_punk - 17.08.2011, 21:27
Re: [REL] Math Plugin - by linuxthefish - 17.08.2011, 21:38
Re: [REL] Math Plugin - by Kar - 17.08.2011, 22:20
Re: [REL] Math Plugin - by Bakr - 19.08.2011, 03:25
Re: [REL] Math Plugin - by JernejL - 20.08.2011, 16:05
Re: [REL] Math Plugin - by Bakr - 21.08.2011, 01:36
Re: [REL] Math Plugin - by BeckzyBoi - 28.08.2011, 03:30
Re: [REL] Math Plugin - by [IL]HeHu - 29.08.2011, 14:17
Re: [REL] Math Plugin - by AndreT - 29.08.2011, 14:32
Re: [REL] Math Plugin - by Kar - 29.08.2011, 14:51
Re: [REL] Math Plugin - by JernejL - 29.08.2011, 18:27
Re: [REL] Math Plugin - by SourceCode - 15.11.2011, 14:17
Re: [REL] Math Plugin - by Niko_boy - 15.11.2011, 15:25
Re: [REL] Math Plugin - by leong124 - 17.11.2011, 08:45
Re: [REL] Math Plugin - by BeckzyBoi - 22.12.2011, 21:56
Re: [REL] Math Plugin - by leong124 - 23.12.2011, 04:07
Re: [REL] Math Plugin - by BeckzyBoi - 23.12.2011, 22:54
Re: [REL] Math Plugin - by leong124 - 24.12.2011, 16:54
Re: [REL] Math Plugin - by TheArcher - 03.01.2012, 23:30
Re: [REL] Math Plugin - by RyDeR` - 04.01.2012, 00:35
Re: [REL] Math Plugin - by DrTHE - 04.01.2012, 00:44
Re: [REL] Math Plugin - by TheArcher - 04.01.2012, 01:05
Re: [REL] Math Plugin - by zgintasz - 09.06.2012, 12:11
Re: [REL] Math Plugin - by cyber_punk - 04.10.2012, 19:55
Re: [REL] Math Plugin - by TheArcher - 01.02.2013, 18:14
Re: [REL] Math Plugin - by TheArcher - 02.02.2013, 10:25
Re: [REL] Math Plugin - by JernejL - 25.03.2015, 12:14

Forum Jump:


Users browsing this thread: 1 Guest(s)