Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.os.linux.advocacy > #425710
| From | Melzzzzz <Melzzzzz@zzzzz.com> |
|---|---|
| Newsgroups | comp.os.linux.advocacy |
| Subject | Re: FizzBuzz: an Interview Question ( for programmers ). |
| Date | 2017-08-04 14:00 +0000 |
| Organization | albasani.net |
| Message-ID | <om1ulk$eo8$3@news.albasani.net> (permalink) |
| References | (6 earlier) <szbdwo.wa33@rooftop.invalid> <olub0m$qj7$3@news.albasani.net> <xbabfa3.arr@rooftop.invalid> <om0v5l$ko9$1@news.albasani.net> <xzb33a0ab.u33@rooftop.invalid> |
On 2017-08-04, owl <owl@rooftop.invalid> wrote: > Melzzzzz <Melzzzzz@zzzzz.com> wrote: >> On 2017-08-03, owl <owl@rooftop.invalid> wrote: >>> Melzzzzz <Melzzzzz@zzzzz.com> wrote: >>>> On 2017-08-03, owl <owl@rooftop.invalid> wrote: >>>>> Melzzzzz <Melzzzzz@zzzzz.com> wrote: >>>>>> On 2017-08-03, owl <owl@rooftop.invalid> wrote: >>>>>>> Melzzzzz <Melzzzzz@zzzzz.com> wrote: >>>>>>>> >>>>>>>> Here is mine (fasm on Linux) >>>>>>>> ~/.../examples/tasks >>> cat fizzbuzz.asm >>>>>>>> format elf64 executable 3 >>>>>>>> include 'import64.inc' >>>>>>>> >>>>>>> >>>>>>> anon@lowtide:~/fasm/fasm$ ./fasm.x64 fizzbuzz.asm >>>>>>> flat assembler version 1.71.64 (16384 kilobytes memory, x64) >>>>>>> fizzbuzz.asm [2]: >>>>>>> include 'import64.inc' >>>>>>> error: file not found. >>>>>>> anon@lowtide:~/fasm/fasm$ >>>>>>> >>>>>>> Where to put that? I tried /usr/include. >>>>>>> No joy. >>>>>>> >>>>>> Put it in current dir ;p >>>>>> >>>>> >>>>> That works (needed elf.inc there too), but I get an "Illegal instruction" >>>>> error. Can't debug fasm code with gdb apparently. >>>>> >>>> >>>> You don't have AVX2 unfortunately, I am afraid. >>>> >>> >>> Apparently not. :( >>> anon@lowtide:~/code/fizzbuzz$ grep -o avx /proc/cpuinfo >>> avx >>> avx >>> avx >>> avx >>> avx >>> avx >>> avx >>> avx >>> anon@lowtide:~/code/fizzbuzz$ >>> >> Here is AVX version try this, does two calculations at time (it would be no problem to make it pure sse): >> format elf64 executable 3 >> include 'import64.inc' >> >> interpreter '/lib64/ld-linux-x86-64.so.2' >> needed 'libc.so.6' >> import exit,printf >> >> segment executable >> entry $ >> xor ebx,ebx >> .L0: >> vpmovzxdq xmm0,[arr+ebx] ; zero extend to quad word >> vpmuludq xmm1,xmm0,xword[cnst3] ; division by multiply and shift >> vpsrlq xmm2,xmm1,33 >> vpmuludq xmm3,xmm2,xword[three] ; multiply >> vpcmpeqd xmm4,xmm0,xmm3 ; see difference >> vpaddd xmm4,xmm0,xmm4 ; add resulting mask which is -1 if equal >> vpshufb xmm4,xmm4,xword[smask] ; mov dwords in right place >> >> vpmuludq xmm1,xmm0,xword[cnst5] >> vpsrlq xmm2,xmm1,34 >> vpmuludq xmm3,xmm2,xword[five] >> vpcmpeqd xmm5,xmm0,xmm3 >> vpaddd xmm5,xmm5,xmm5 ; make that in -2 >> vpshufb xmm5,xmm5,xword[smask] >> >> vpaddd xmm4,xmm5,xmm4 ; if both matches then -3 would be added >> >> vmovq [arr+ebx],xmm4 >> add ebx,8 >> cmp ebx,100*4 >> jl .L0 >> xor ebx,ebx >> .L1: >> mov r8,fizzbuzz >> mov r9,fizz >> mov r10,buzz >> mov edx,[arr+rbx*4] >> lea esi,[rbx+1] >> mov rdi,fmt >> sub esi,edx >> cmp esi,3 ; if difference is 3 then both matches >> cmove rdi,r8 >> cmp esi,2 ; buzz matches >> cmove rdi,r10 >> cmp esi,1 ; fizz matches >> cmove rdi,r9 >> lea rsi,[rbx+1] >> xor eax,eax >> call [printf] >> inc ebx >> cmp ebx,100 >> jl .L1 >> xor edi,edi >> .exit: >> call [exit] >> >> segment writeable >> align 16 >> arr: times 100 dd % ; initialize 1..100 >> align 32 >> cnst3 dq 2 dup(2863311531) ; required shift 33 >> three dq 2 dup(3) >> cnst5 dq 2 dup(3435973837) ; required shift 34 >> five dq 2 dup(5) >> smask db 0,1,2,3 >> db 8,9,10,11 >> times 4 db -128 >> times 4 db -128 >> >> fmt db '%4d %d',0xa,0 >> fizz db '%4d fizz',0xa,0 >> buzz db '%4d buzz',0xa,0 >> fizzbuzz db '%4d fizzbuzz',0xa,0 >> >> > > I modified your code a bit to run to 100,000 and print format > same across all tests: > > anon@lowtide:~/fasm/fasm$ time ./owl >owlout > > real 0m0.024s > user 0m0.016s > sys 0m0.004s > anon@lowtide:~/fasm/fasm$ time ./relf >relfout > > real 0m0.025s > user 0m0.020s > sys 0m0.004s > anon@lowtide:~/fasm/fasm$ time ./melz >melzout > > real 0m0.026s > user 0m0.020s > sys 0m0.004s Heh, seems that printing takes most of execution time :P -- press any key to continue or any other to quit...
Back to comp.os.linux.advocacy | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: FizzBuzz: an Interview Question ( for programmers ). fr314159@gmail.com - 2017-08-02 11:14 -0700
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-02 20:19 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-02 21:06 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-02 21:37 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 01:46 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-03 04:32 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 05:01 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-03 05:06 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 05:15 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 05:02 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-04 13:52 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 14:00 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 12:56 -0500
Re: FizzBuzz: an Interview Question ( for programmers ). Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 11:03 -0700
Re: FizzBuzz: an Interview Question ( for programmers ). Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 18:05 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 11:08 -0700
Re: FizzBuzz: an Interview Question ( for programmers ). Snit <usenet@gallopinginsanity.com> - 2017-08-04 11:23 -0700
Re: Marek Novotny is a command line jockey. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 14:24 -0500
Re: Marek Novotny is a command line jockey. Snit <usenet@gallopinginsanity.com> - 2017-08-04 12:45 -0700
Re: This is better, no ? Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 15:24 -0500
Re: Marek Novotny is a command line jockey. Snit <usenet@gallopinginsanity.com> - 2017-08-04 12:38 -0700
Re: My code is twice as fast as Owl's. owl <owl@rooftop.invalid> - 2017-08-03 03:12 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). "F. Russell" <fr@random.info> - 2017-08-02 23:04 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). "F. Russell" <fr@random.info> - 2017-08-02 23:25 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). owl <owl@rooftop.invalid> - 2017-08-03 01:50 +0000
Re: Fabian's code is always slower. owl <owl@rooftop.invalid> - 2017-08-03 04:41 +0000
Re: Fabian's code is always slower. owl <owl@rooftop.invalid> - 2017-08-03 05:17 +0000
Re: What's easier to read/maintain ? owl <owl@rooftop.invalid> - 2017-08-03 05:57 +0000
Re: Fabian's code is always slower. fr314159@gmail.com - 2017-08-03 08:21 -0700
Re: Fabian's code is always slower. Steve Carroll <fretwizzer@gmail.com> - 2017-08-03 09:24 -0700
Re: Fabian's code is always slower. owl <owl@rooftop.invalid> - 2017-08-03 18:41 +0000
Re: FizzBuzz: an Interview Question ( for programmers ). Snit <usenet@gallopinginsanity.com> - 2017-08-03 13:49 -0700
Re: 4 lines, 4 states. Snit <usenet@gallopinginsanity.com> - 2017-08-03 22:11 -0700
Re: 4 lines, 4 states. Snit <usenet@gallopinginsanity.com> - 2017-08-03 22:47 -0700
Re: 4 lines, 4 states. Snit <usenet@gallopinginsanity.com> - 2017-08-03 22:52 -0700
Re: Mozilla ThunderBird. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 08:54 -0700
Re: Mozilla ThunderBird. Snit <usenet@gallopinginsanity.com> - 2017-08-04 10:43 -0700
Re: FizzBuzz is a trick question. Snit <usenet@gallopinginsanity.com> - 2017-08-04 11:47 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-04 12:51 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. fr314159@gmail.com - 2017-08-04 12:57 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 13:02 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 20:02 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 13:11 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 20:17 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Steve Carroll <fretwizzer@gmail.com> - 2017-08-04 13:42 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-04 23:06 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Melzzzzz <Melzzzzz@zzzzz.com> - 2017-08-04 23:32 +0000
Re: I'm the best c coder here. Snit <usenet@gallopinginsanity.com> - 2017-08-04 14:03 -0700
Re: I'm the best c coder here. "F. Russell" <fr@random.info> - 2017-08-04 23:15 +0000
Re: I'm the best c coder here. benj <benj@nobody.net> - 2017-08-04 19:35 -0400
Re: I'm the best c coder here. "F. Russell" <fr@random.info> - 2017-08-05 16:08 +0000
Re: Fabian seldom writes code, much less test it. owl <owl@rooftop.invalid> - 2017-08-05 03:09 +0000
Re: 2 lines, 2^2 states, easily modified to 3^2 states. owl <owl@rooftop.invalid> - 2017-08-05 05:42 +0000
Re: Who'd use "x++", in a loop, to find FizzBuzzGoozKaaz ? owl <owl@rooftop.invalid> - 2017-08-05 07:30 +0000
Re: 2 lines, 2^2 states, easily modified to 3^2 states. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-05 10:19 -0500
Re: 2 lines, 2^2 states, easily modified to 3^2 states. Steve Carroll <fretwizzer@gmail.com> - 2017-08-05 10:13 -0700
Re: 2 lines, 2^2 states, easily modified to 3^2 states. owl <owl@rooftop.invalid> - 2017-08-05 17:33 +0000
Re: Fabian seldom writes code, much less test it. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 22:24 -0500
Re: Fabian seldom writes code, much less test it. "F. Russell" <fr@random.info> - 2017-08-05 13:37 +0000
Re: Fabian seldom writes code, much less test it. "F. Russell" <fr@random.info> - 2017-08-05 14:25 +0000
Re: I'm the best c coder here. owl <owl@rooftop.invalid> - 2017-08-05 03:22 +0000
Re: I'm the best c coder here. Marek Novotny <marek.novotny@marspolar.com> - 2017-08-04 22:35 -0500
Re: I'm the best c coder here. owl <owl@rooftop.invalid> - 2017-08-05 04:08 +0000
Re: I reduced Owl's 43 lines to 5. owl <owl@rooftop.invalid> - 2017-08-05 07:25 +0000
Re: Owl's FizBuzGozKaz branches 5 times more often. owl <owl@rooftop.invalid> - 2017-08-05 15:40 +0000
Re: I'm _still_ the best c coder here. owl <owl@rooftop.invalid> - 2017-08-05 06:12 +0000
Re: I'm _still_ the best c coder here. moroney@world.std.spaamtrap.com (Michael Moroney) - 2017-08-05 22:16 +0000
Re: I increment things at the _start_ of a loop. Steve Carroll <fretwizzer@gmail.com> - 2017-08-06 11:04 -0700
Re: I increment things at the _start_ of a loop. moroney@world.std.spaamtrap.com (Michael Moroney) - 2017-08-07 03:24 +0000
Re: I increment things at the _start_ of a loop. Snit <usenet@gallopinginsanity.com> - 2017-08-06 20:35 -0700
Re: "while ( x++ < 100 )" isn't "obscure". moroney@world.std.spaamtrap.com (Michael Moroney) - 2017-08-07 04:59 +0000
Re: I'm the best c coder here. chrisv <chrisv@nospam.invalid> - 2017-08-07 06:59 -0500
Re: I'm the best c coder here. Steve Carroll <fretwizzer@gmail.com> - 2017-08-08 10:23 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. DFS <nospam@dfs.com> - 2017-08-04 17:56 -0400
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-04 23:04 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-04 16:09 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. fellatiohornblower@renlott.org - 2017-08-04 20:13 -0400
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-05 13:50 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. "F. Russell" <fr@random.info> - 2017-08-05 15:23 +0000
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-05 10:06 -0700
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Doomsdrzej <.m@nsn.s> - 2017-08-05 11:52 -0400
Re: Michael Glasser, Steve Carroll, Marek Novotny, Branimir Maksimovic, etc. Snit <usenet@gallopinginsanity.com> - 2017-08-05 09:55 -0700
Re: Fabian's code is always slower. Takuya Saitoh <taka0038@gmail.com> - 2017-08-06 22:37 -0700
csiph-web