Building Harbour x64 with MinGW x64

Moderator: Rathinagiri

Post Reply
User avatar
MigSoft
Posts: 74
Joined: Sat Aug 02, 2008 5:51 am
DBs Used: DBF, MySQL, MariaDB, SQLite, PostgreSQL, FireBird
Location: Santiago - Chile
Contact:

Building Harbour x64 with MinGW x64

Post by MigSoft »

Hello,

The following link is an attempt to explain how to build Harbour 64 Bits :D

http://mig2soft.com/?p=206
Regards,

MigSoft.
User avatar
luisvasquezcl
Posts: 1258
Joined: Thu Jul 31, 2008 3:23 am
Location: Chile
Contact:

Re: Building Harbour x64 with MinGW x64

Post by luisvasquezcl »

Gracias Miguel,
como siempre con tus buenos aportes.
Espero que te encuentres bien despues del sacudón... ;)
Saludos cordiales,
Luis Vasquez.
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Building Harbour x64 with MinGW x64

Post by Rathinagiri »

Nice one. Thanks for sharing MigSoft.

Can you feel the speed difference?
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
MigSoft
Posts: 74
Joined: Sat Aug 02, 2008 5:51 am
DBs Used: DBF, MySQL, MariaDB, SQLite, PostgreSQL, FireBird
Location: Santiago - Chile
Contact:

Re: Building Harbour x64 with MinGW x64

Post by MigSoft »

Gracias Luis, en realidad fue una experiencia muy fuerte, pero sin problemas.

Rathinagiri,
You notice a subtle increase in the speed of the compiled program, I need to do some comparative tests to see results. :|
The next step is to compile HMG, someone already did :?:
Regards,

MigSoft.
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Building Harbour x64 with MinGW x64

Post by Rathinagiri »

I don't think so...

Let us know about your experiments. :)
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
MigSoft
Posts: 74
Joined: Sat Aug 02, 2008 5:51 am
DBs Used: DBF, MySQL, MariaDB, SQLite, PostgreSQL, FireBird
Location: Santiago - Chile
Contact:

Re: Building Harbour x64 with MinGW x64

Post by MigSoft »

Hello,

These are the results:

2010.04.04 19:51:26 Windows 7 6.1.7600
Harbour 2.1.0dev (Rev. 14264) MinGW GNU C 4.4.1 (32-bit) x86

THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.05
====================================================================
[ T001: x := L_C ]..............................................0.05
[ T002: x := L_N ]..............................................0.05
[ T003: x := L_D ]..............................................0.05
[ T004: x := S_C ]..............................................0.05
[ T005: x := S_N ]..............................................0.06
[ T006: x := S_D ]..............................................0.06
[ T007: x := M->M_C ]...........................................0.05
[ T008: x := M->M_N ]...........................................0.06
[ T009: x := M->M_D ]...........................................0.06
[ T010: x := M->P_C ]...........................................0.06
[ T011: x := M->P_N ]...........................................0.05
[ T012: x := M->P_D ]...........................................0.06
[ T013: x := F_C ]..............................................0.14
[ T014: x := F_N ]..............................................0.20
[ T015: x := F_D ]..............................................0.11
[ T016: x := o:Args ]...........................................0.11
[ T017: x := o[2] ].............................................0.11
[ T018: round( i / 1000, 2 ) ]..................................0.25
[ T019: str( i / 1000 ) ].......................................0.87
[ T020: val( s ) ]..............................................0.22
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.39
[ T022: dtos( d - i % 10000 ) ].................................0.27
[ T023: eval( { || i % 16 } ) ].................................0.28
[ T024: eval( bc := { || i % 16 } ) ]...........................0.14
[ T025: eval( { |x| x % 16 }, i ) ].............................0.19
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.20
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.30
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.27
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.27
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.93
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................2.07
[ T032: x := valtype( x ) + valtype( i ) ].....................0.30
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.84
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.30
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.30
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.30
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.28
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.28
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.31
[ T040: ascan( a, i % 16 ) ]....................................0.22
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................1.97
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.66
[ T043: x := a ]................................................0.06
[ T044: x := {} ]...............................................0.08
[ T045: f0() ]..................................................0.08
[ T046: f1( i ) ]...............................................0.11
[ T047: f2( c[1...8] ) ]........................................0.09
[ T048: f2( c[1...40000] ) ]....................................0.11
[ T049: f2( @c[1...40000] ) ]...................................0.09
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.12
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.41
[ T052: f2( a ) ]...............................................0.11
[ T053: x := f4() ].............................................0.36
[ T054: x := f5() ].............................................0.17
[ T055: x := space(16) ]........................................0.14
[ T056: f_prv( c ) ]............................................0.28
====================================================================
[ total application time: ]....................................19.56
[ total real time: ]...........................................19.99



2010.04.04 19:25:10 Windows 7 6.1.7600
Harbour 2.1.0dev (Rev. 14234) MinGW GNU C 4.4.4 (64-bit) x86-64

THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.06
====================================================================
[ T001: x := L_C ]..............................................0.00
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.00
[ T005: x := S_N ]..............................................0.02
[ T006: x := S_D ]..............................................0.00
[ T007: x := M->M_C ]...........................................0.02
[ T008: x := M->M_N ]...........................................0.00
[ T009: x := M->M_D ]...........................................0.00
[ T010: x := M->P_C ]...........................................0.00
[ T011: x := M->P_N ]...........................................0.02
[ T012: x := M->P_D ]...........................................0.00
[ T013: x := F_C ]..............................................0.11
[ T014: x := F_N ]..............................................0.11
[ T015: x := F_D ]..............................................0.05
[ T016: x := o:Args ]...........................................0.08
[ T017: x := o[2] ].............................................0.06
[ T018: round( i / 1000, 2 ) ]..................................0.11
[ T019: str( i / 1000 ) ].......................................0.27
[ T020: val( s ) ]..............................................0.12
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.25
[ T022: dtos( d - i % 10000 ) ].................................0.20
[ T023: eval( { || i % 16 } ) ].................................0.20
[ T024: eval( bc := { || i % 16 } ) ]...........................0.14
[ T025: eval( { |x| x % 16 }, i ) ].............................0.19
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.12
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.22
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.20
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.20
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.64
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................2.06
[ T032: x := valtype( x ) + valtype( i ) ].....................0.22
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.44
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.16
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.17
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.16
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.17
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.16
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.14
[ T040: ascan( a, i % 16 ) ]....................................0.16
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................1.53
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.48
[ T043: x := a ]................................................0.00
[ T044: x := {} ]...............................................0.06
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.08
[ T047: f2( c[1...8] ) ]........................................0.08
[ T048: f2( c[1...40000] ) ]....................................0.06
[ T049: f2( @c[1...40000] ) ]...................................0.08
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.09
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.25
[ T052: f2( a ) ]...............................................0.06
[ T053: x := f4() ].............................................0.28
[ T054: x := f5() ].............................................0.14
[ T055: x := space(16) ]........................................0.09
[ T056: f_prv( c ) ]............................................0.20
====================================================================
[ total application time: ]....................................15.18
[ total real time: ]............................................15.53

"Exe files" for your tests
Attachments
speedtst.zip
(987.18 KiB) Downloaded 726 times
Regards,

MigSoft.
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Building Harbour x64 with MinGW x64

Post by Rathinagiri »

Nice. Thanks for sharing MigSoft.
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
Czarny_Pijar
Posts: 172
Joined: Thu Mar 18, 2010 11:31 pm
Location: 19.2341 E 50.2267 N

Re: Building Harbour x64 with MinGW x64

Post by Czarny_Pijar »

MigSoft wrote:These are the results:
...
(32-bit [ total real time: ]...........................................19.99
(64-bit)[ total real time: ]............................................15.53
Had expected someone to double the speed? Real-life application will benefits even less, they depends mainly on the HDD throughput.
Post Reply