[swift-users] Proper syntax for 2D table with initial values
Daniel Dunbar
daniel_dunbar at apple.com
Mon May 23 13:56:56 CDT 2016
The type inference used in Swift can perform poorly when used in this fashion.
You may be able to get acceptable performance by inserting explicit casts, like:
[...] as [UInt8]
around each of your individual arrays.
If not, my suggestion would be to embed your data in a C function, and expose it to Swift using a simple C function which you import.
In any case it is probably worth filing a bug with your example test case.
- Daniel
> On May 23, 2016, at 11:04 AM, Ken Burgett via swift-users <swift-users at swift.org> wrote:
>
> I have a large 2D table defined within a C .h file, as follows:
>
> static const uint8_t blake2b_kat[256][64] =
> {
> {
> 0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,
> 0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,
> 0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,
> 0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,
> 0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,
> 0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,
> 0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,
> 0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE
> }
> ... shortened for clarity ...
> }
> There are 16384 elements in this array. The C compiler accepts it with no difficulty
>
> I converted it to a .swift file like so:
>
> let blake2b_kat: [[UInt8]] =
> [
> [
> 0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03,
> 0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72,
> 0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61,
> 0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19,
> 0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53,
> 0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B,
> 0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55,
> 0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE
> ]
> ...
> ]
>
> When I attempt a swift compile, the compiler seems to go away and never return. I tried the same test with the REPL and saw all the text list (2600 lines), but then the same thing happened. I left the REPL running for 10 minutes or so, with no output. I have tried the same swift table definition with fewer rows and columns, and it produces the correct 2D array.
>
> My question is whether this is just an issue with the current Swift compiler (I am using the May 9th version for Ubuntu 14.04) or is this a recognized limitation in scale? In order to get my 2D table filled and work around this issue, I will have to read the file with file I/O and do my own parsing.
> --
> Ken Burgett
> Principal Software Engineer
> Email: kenb at iotone.io
> Office: 530.693.4449
> Mobile: 831.332.6846
> URL: www.iotone.co
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
More information about the swift-users
mailing list