Doing vertex data interleaved like this requires all the attributes to have the same size. I am able to get away with this since I pack everything into SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4. Interleaved vertex buffers with mixed data sizes seems like a good place for using an inverted table and a C function to write it onto a transfer buffer row-by-row. Inverted tables also have the added benefit of squeezing the space used by each column if the numbers fall into a certain range. For example, with mock data: v_attrib ← ('p.x'⋄'p.y'⋄'p.z'⋄'n.x'⋄'n.y'⋄'n.z'⋄'r'⋄'g'⋄'b') ⋄ vb1←?(0 0 0 0 0 0 256 256 256)⍴⍨10000,≢v_attrib ⋄ vb2←{↑¨⊂⍤¯1⍉⍵}vb1, calling th system function ⎕SIZE 'vb1' 'vb2' returns 720040 and 540392 bytes respectively. ↩︎
# │ %rbp-4 = int i (loop counter) │
,更多细节参见爱思助手
Hampshire & Isle of Wight,详情可参考谷歌
The test cases are designed to run in a few rounds - executing set QUERIES_RATE per second (QPS) for the configured QUERIES_TO_EXECUTE in total. Depending on the specific scenario, these numbers range from a few hundreds per second to tens (& hundreds) of thousands; in most cases, QUERIES_TO_EXECUTE = 10 * QUERIES_RATE.