- 主题:如何优雅的生成类似[1,-3,5,-7……]这样的序列
怎么这么慢?是不是没优化?
【 在 callmebbser (BBSer) 的大作中提到: 】
: 标 题: Re: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: 发信站: 水木社区 (Sun Jun 14 22:48:10 2020), 转信
:
: Visual Studio 2013 VC++ 32位 release下,运行结果是820毫秒左右。
:
: #include "stdafx.h"
: #include <windows.h>
: #include <iostream>
:
: using namespace std;
:
: int _tmain(int argc, _TCHAR* argv[])
: {
: long t = GetTickCount();
: int r = 0;
: for (int n = 0; n < 10000; n++){
: int a[10000] = { 0 };
这个={0}应该去掉吧。
: int b[2] = { 1, -1 };
: for (int i = 0; i < 10000; i++){
: a[i] = (2 * i + 1)*b[i % 2];
: }
: r = a[9999];
: }
: t = GetTickCount() - t;
: cout << "Time used: " << t << " ms. a[9999]=" << r;
: return 0;
: }
:
: 【 在 callmebbser (BBSer) 的大作中提到: 】
: : Qt 5.14.2 MinGW 32bit release下,运行结果是815毫秒左右。
: : #include <QCoreApplication>
: : #include <QDebug>
: : ...................
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 58.23.245.*]
--
FROM 76.126.252.*
B格高...
低自尊的人特别喜欢高大上...
【 在 dhcn (dhcn) 的大作中提到: 】
: 怎么定义优雅?
--
FROM 142.59.143.*
julia> function f(n::Int64)
a = collect(1:2:n)
sin.(a .* π/2) .* a
end
f (generic function with 1 method)
julia> @time f(100);
0.000007 seconds (4 allocations: 1.938 KiB)
julia> @time f(20000);
0.000248 seconds (8 allocations: 312.812 KiB)
julia>
【 在 callmebbser (BBSer) 的大作中提到: 】
: 标 题: Re: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: 发信站: 水木社区 (Sun Jun 14 09:11:43 2020), 站内
:
: 10000 loops of a = np.arange(1, 20000, 2), a = np.sin(a*pi/2)*a:
: 1.8311045169830322 s.
: 10000 loops of a = np.arange(1, 20000, 2), a = np.where(a%4==1, a, -a):
: 1.0180583000183105 s.
: 10000 loops of [i if (i%4==1) else -i for i in range(1, 20000, 2)]:
: 11.047631978988647 s.
: 10000 loops of [-(i*2+1) if (i&1) else (i*2+1) for i in range(10000)]:
: 21.168210744857788 s.
: 10000 loops of [-(i*2+1) if (i%2) else (i*2+1) for i in range(10000)]:
: 19.10609269142151 s.
: 10000 loops of [(-1)**i*(2*i+1) for i in range(10000)]:
: 73.45320105552673 s.
: 10000 loops of [(-1)**(i&1)*(i*2+1) for i in range(10000)]:
: 57.76730442047119 s.
: 10000 loops of [(-1)**(i%2)*(2*i+1) for i in range(10000)]:
: 58.772361278533936 s.
:
: 期待更快的答案出现。
:
: 【 在 callmebbser (BBSer) 的大作中提到: 】
: : 标 题: Re: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: : 发信站: 水木社区 (Sun Jun 14 08:35:45 2020), 站内
: :
: : 这个目前是最快的。
: :
: :
: : 【 在 Krank (男兒到死心如鐵) 的大作中提到: 】
: : : 标 题: Re: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: : : 发信站: 水木社区 (Sun Jun 14 04:05:50 2020), 站内
: : :
: : : 你這個用搜索的會慢得令人髮指吧。
: : : 【 在 roy (天上掉大饼:学思行言) 的大作中提到: 】
: : : : 既然用numpy了,可以这样写
: : : : lst=np.arange(1,n+1,2)
: : : : lst2=np.where(lst%4==1,lst,-lst)
: : : : ...................
: : :
: : : --
: : :
: : : ※ 来源:·水木社区 newsmth.net·[FROM: 73.229.62.*]
: :
: :
: : --
: :
: : ※ 来源:·水木社区 newsmth.net·[FROM: 58.23.245.*]
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 58.23.245.*]
:
--
FROM 123.139.18.*
https://www.freebasic.net应该可以不修改支持这源代码
https://www.purebasic.com据称是所有的BASIC语言中,可以产生最小、最快代码的
但是,实际它的代码和BASIC还是有点差异
【 在 sosei (fss.sosei) 的大作中提到: 】
: 还是Delphi强悍,Borland最棒了
: 我写了个QB64程序,本机3.08秒
: DIM t AS DOUBLE
: ...................
--
FROM 116.1.3.*
最快的,1.98秒
DIM t AS DOUBLE
DIM p AS INTEGER
DIM a(10000) AS INTEGER
t = TIMER
FOR n = 1 TO 10000
p = 1
FOR i = 1 TO 20000 STEP 4
a(p) = i
p = p + 2
NEXT i
p = 2
FOR i = 3 TO 20000 STEP 4
a(p) = -i
p = p + 2
NEXT i
NEXT n
PRINT TIMER - t
PRINT a(10000)
--
FROM 60.1.11.*
同clojure:
(#(map * (range 1 % 2) (cycle [1 -1])) 100)
【 在 iRoNcOoL 的大作中提到: 】
: 来个 clj 的
: (interleave
: (iterate #(+ 4 %) 1)
: ...................
--
FROM 106.121.138.*
def gen(x):
a, b, c = 5, -3, 1
for _ in range(x):
a, b, c = b, c, a + b - c
yield c
>>> list(gen(20))
>>> [1, -3, 5, -7, 9, -11, 13, -15, 17, -19, 21, -23, 25, -27, 29, -31, 33, -35, 37, -39]
【 在 dyspnea (呼吸困难) 的大作中提到: 】
: 标 题: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: 发信站: 水木社区 (Fri Jun 12 09:05:01 2020), 转信
:
: rt
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 219.239.238.*]
--
修改:superisaac FROM 114.246.75.*
FROM 103.233.52.*
julia语言写了个
function f(b,l)
a = Vector{BigInt}(undef, Int(ceil((l+1)/2)))
p = 1
for i = b:4:b+l
a[p] = i
p += 2
end
p = 2
for i = -(b+2):-4:-(b+l)
a[p] = i
p += 2
end
a
end
@time f(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999,999999)
0.351s
比ipython慢一半
【 在 KDr2 的大作中提到: 】
: julia> function f(n::Int64)
: a = collect(1:2:n)
: sin.(a .* π/2) .* a
: ...................
--
FROM 60.1.11.*
Python 版呢?
【 在 sosei (fss.sosei) 的大作中提到: 】
: julia语言写了个
: function f(b,l)
: a = Vector{BigInt}(undef, Int(ceil((l+1)/2)))
: ...................
--
FROM 123.139.18.*