I just coded up a quick amicable/perfect finder (using an expensive inner mechanism) and still it runs in 1.3 seconds in single processor mode. The times are not comparable because the techniques may not be the same, but I don't think it is fair to judge Go as slow.
babar:amicable mtj$ time amicable 1000000 perfect: sum 1 = 1 perfect: sum 6 = 6 perfect: sum 28 = 28 perfect: sum 496 = 496 perfect: sum 8128 = 8128 amicable: sum 220 = 284, sum 284 = 220 amicable: sum 1184 = 1210, sum 1210 = 1184 amicable: sum 2620 = 2924, sum 2924 = 2620 amicable: sum 5020 = 5564, sum 5564 = 5020 amicable: sum 6232 = 6368, sum 6368 = 6232 amicable: sum 10744 = 10856, sum 10856 = 10744 amicable: sum 12285 = 14595, sum 14595 = 12285 amicable: sum 17296 = 18416, sum 18416 = 17296 amicable: sum 63020 = 76084, sum 76084 = 63020 amicable: sum 66928 = 66992, sum 66992 = 66928 amicable: sum 67095 = 71145, sum 71145 = 67095 amicable: sum 69615 = 87633, sum 87633 = 69615 amicable: sum 79750 = 88730, sum 88730 = 79750 amicable: sum 100485 = 124155, sum 124155 = 100485 amicable: sum 122265 = 139815, sum 139815 = 122265 amicable: sum 122368 = 123152, sum 123152 = 122368 amicable: sum 141664 = 153176, sum 153176 = 141664 amicable: sum 142310 = 168730, sum 168730 = 142310 amicable: sum 171856 = 176336, sum 176336 = 171856 amicable: sum 176272 = 180848, sum 180848 = 176272 amicable: sum 185368 = 203432, sum 203432 = 185368 amicable: sum 196724 = 202444, sum 202444 = 196724 amicable: sum 280540 = 365084, sum 365084 = 280540 amicable: sum 308620 = 389924, sum 389924 = 308620 amicable: sum 319550 = 430402, sum 430402 = 319550 amicable: sum 356408 = 399592, sum 399592 = 356408 amicable: sum 437456 = 455344, sum 455344 = 437456 amicable: sum 469028 = 486178, sum 486178 = 469028 amicable: sum 503056 = 514736, sum 514736 = 503056 amicable: sum 522405 = 525915, sum 525915 = 522405 amicable: sum 600392 = 669688, sum 669688 = 600392 amicable: sum 609928 = 686072, sum 686072 = 609928 amicable: sum 624184 = 691256, sum 691256 = 624184 amicable: sum 635624 = 712216, sum 712216 = 635624 amicable: sum 643336 = 652664, sum 652664 = 643336 amicable: sum 667964 = 783556, sum 783556 = 667964 amicable: sum 726104 = 796696, sum 796696 = 726104 amicable: sum 802725 = 863835, sum 863835 = 802725 amicable: sum 879712 = 901424, sum 901424 = 879712 amicable: sum 898216 = 980984, sum 980984 = 898216 real 0m1.282s user 0m1.324s sys 0m0.027s The perfect numbers fall out from the search for amicable numbers. Expanding the upper limit to ten million requires 25.942 seconds, which is 20x the time for 10x the range. As the numbers get bigger, the number of divisors increases, sometimes considerably. This is expensive in my inner loop, so a really speedy version of this would need to rework that section. Also, parallelism is easy here. babar:amicable mtj$ time amicable 10000000 perfect: sum 1 = 1 perfect: sum 6 = 6 perfect: sum 28 = 28 perfect: sum 496 = 496 perfect: sum 8128 = 8128 amicable: sum 220 = 284, sum 284 = 220 amicable: sum 1184 = 1210, sum 1210 = 1184 amicable: sum 2620 = 2924, sum 2924 = 2620 amicable: sum 5020 = 5564, sum 5564 = 5020 amicable: sum 6232 = 6368, sum 6368 = 6232 amicable: sum 10744 = 10856, sum 10856 = 10744 amicable: sum 12285 = 14595, sum 14595 = 12285 amicable: sum 17296 = 18416, sum 18416 = 17296 amicable: sum 63020 = 76084, sum 76084 = 63020 amicable: sum 66928 = 66992, sum 66992 = 66928 amicable: sum 67095 = 71145, sum 71145 = 67095 amicable: sum 69615 = 87633, sum 87633 = 69615 amicable: sum 79750 = 88730, sum 88730 = 79750 amicable: sum 100485 = 124155, sum 124155 = 100485 amicable: sum 122265 = 139815, sum 139815 = 122265 amicable: sum 122368 = 123152, sum 123152 = 122368 amicable: sum 141664 = 153176, sum 153176 = 141664 amicable: sum 142310 = 168730, sum 168730 = 142310 amicable: sum 171856 = 176336, sum 176336 = 171856 amicable: sum 176272 = 180848, sum 180848 = 176272 amicable: sum 185368 = 203432, sum 203432 = 185368 amicable: sum 196724 = 202444, sum 202444 = 196724 amicable: sum 280540 = 365084, sum 365084 = 280540 amicable: sum 308620 = 389924, sum 389924 = 308620 amicable: sum 319550 = 430402, sum 430402 = 319550 amicable: sum 356408 = 399592, sum 399592 = 356408 amicable: sum 437456 = 455344, sum 455344 = 437456 amicable: sum 469028 = 486178, sum 486178 = 469028 amicable: sum 503056 = 514736, sum 514736 = 503056 amicable: sum 522405 = 525915, sum 525915 = 522405 amicable: sum 600392 = 669688, sum 669688 = 600392 amicable: sum 609928 = 686072, sum 686072 = 609928 amicable: sum 624184 = 691256, sum 691256 = 624184 amicable: sum 635624 = 712216, sum 712216 = 635624 amicable: sum 643336 = 652664, sum 652664 = 643336 amicable: sum 667964 = 783556, sum 783556 = 667964 amicable: sum 726104 = 796696, sum 796696 = 726104 amicable: sum 802725 = 863835, sum 863835 = 802725 amicable: sum 879712 = 901424, sum 901424 = 879712 amicable: sum 898216 = 980984, sum 980984 = 898216 amicable: sum 947835 = 1125765, sum 1125765 = 947835 amicable: sum 998104 = 1043096, sum 1043096 = 998104 amicable: sum 1077890 = 1099390, sum 1099390 = 1077890 amicable: sum 1154450 = 1189150, sum 1189150 = 1154450 amicable: sum 1156870 = 1292570, sum 1292570 = 1156870 amicable: sum 1175265 = 1438983, sum 1438983 = 1175265 amicable: sum 1185376 = 1286744, sum 1286744 = 1185376 amicable: sum 1280565 = 1340235, sum 1340235 = 1280565 amicable: sum 1328470 = 1483850, sum 1483850 = 1328470 amicable: sum 1358595 = 1486845, sum 1486845 = 1358595 amicable: sum 1392368 = 1464592, sum 1464592 = 1392368 amicable: sum 1466150 = 1747930, sum 1747930 = 1466150 amicable: sum 1468324 = 1749212, sum 1749212 = 1468324 amicable: sum 1511930 = 1598470, sum 1598470 = 1511930 amicable: sum 1669910 = 2062570, sum 2062570 = 1669910 amicable: sum 1798875 = 1870245, sum 1870245 = 1798875 amicable: sum 2082464 = 2090656, sum 2090656 = 2082464 amicable: sum 2236570 = 2429030, sum 2429030 = 2236570 amicable: sum 2652728 = 2941672, sum 2941672 = 2652728 amicable: sum 2723792 = 2874064, sum 2874064 = 2723792 amicable: sum 2728726 = 3077354, sum 3077354 = 2728726 amicable: sum 2739704 = 2928136, sum 2928136 = 2739704 amicable: sum 2802416 = 2947216, sum 2947216 = 2802416 amicable: sum 2803580 = 3716164, sum 3716164 = 2803580 amicable: sum 3276856 = 3721544, sum 3721544 = 3276856 amicable: sum 3606850 = 3892670, sum 3892670 = 3606850 amicable: sum 3786904 = 4300136, sum 4300136 = 3786904 amicable: sum 3805264 = 4006736, sum 4006736 = 3805264 amicable: sum 4238984 = 4314616, sum 4314616 = 4238984 amicable: sum 4246130 = 4488910, sum 4488910 = 4246130 amicable: sum 4259750 = 4445050, sum 4445050 = 4259750 amicable: sum 4482765 = 5120595, sum 5120595 = 4482765 amicable: sum 4532710 = 6135962, sum 6135962 = 4532710 amicable: sum 4604776 = 5162744, sum 5162744 = 4604776 amicable: sum 5123090 = 5504110, sum 5504110 = 5123090 amicable: sum 5147032 = 5843048, sum 5843048 = 5147032 amicable: sum 5232010 = 5799542, sum 5799542 = 5232010 amicable: sum 5357625 = 5684679, sum 5684679 = 5357625 amicable: sum 5385310 = 5812130, sum 5812130 = 5385310 amicable: sum 5459176 = 5495264, sum 5495264 = 5459176 amicable: sum 5726072 = 6369928, sum 6369928 = 5726072 amicable: sum 5730615 = 6088905, sum 6088905 = 5730615 amicable: sum 5864660 = 7489324, sum 7489324 = 5864660 amicable: sum 6329416 = 6371384, sum 6371384 = 6329416 amicable: sum 6377175 = 6680025, sum 6680025 = 6377175 amicable: sum 6955216 = 7418864, sum 7418864 = 6955216 amicable: sum 6993610 = 7158710, sum 7158710 = 6993610 amicable: sum 7275532 = 7471508, sum 7471508 = 7275532 amicable: sum 7288930 = 8221598, sum 8221598 = 7288930 amicable: sum 7489112 = 7674088, sum 7674088 = 7489112 amicable: sum 7577350 = 8493050, sum 8493050 = 7577350 amicable: sum 7677248 = 7684672, sum 7684672 = 7677248 amicable: sum 7800544 = 7916696, sum 7916696 = 7800544 amicable: sum 7850512 = 8052488, sum 8052488 = 7850512 amicable: sum 8262136 = 8369864, sum 8369864 = 8262136 amicable: sum 8619765 = 9627915, sum 9627915 = 8619765 amicable: sum 9071685 = 9498555, sum 9498555 = 9071685 amicable: sum 9199496 = 9592504, sum 9592504 = 9199496 amicable: sum 9339704 = 9892936, sum 9892936 = 9339704 amicable: sum 9363584 = 9437056, sum 9437056 = 9363584 real 0m25.942s user 0m26.395s sys 0m0.109s Michael (Coding at breakfast in the Zurich, Switzerland airport on the way to Muscat, Oman) http://www.ams.org/journals/mcom/1967-21-098/S0025-5718-1967-0222006-7/S0025-5718-1967-0222006-7.pdf On Sun, Feb 26, 2017 at 2:33 AM, John Souvestre <j...@souvestre.com> wrote: > Changing just the mod operation to int32 made the whole program run about > 2.5 times faster for me. Wow! I had no idea that there would be that much > difference. > > John > > John Souvestre - New Orleans LA > > -----Original Message----- > From: golang-nuts@googlegroups.com [mailto:golang-nuts@googlegroups.com] > On Behalf Of Konstantin Shaposhnikov > Sent: 2017 February 26, Sun 00:42 > To: golang-nuts > Subject: [go-nuts] Re: [Newbie] Why this code is so slow? > > int type in Go is 64 bit on 64 bit system . Most likely you are using 32 > bit integers in other languages (e.g. int in Java). 64 bit division is > slower than 32 bit. Try changing your Go program to use int32 instead and > see if it becomes faster. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Michael T. Jones michael.jo...@gmail.com -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.