changing/variable index of an array on FPGA

Hi all

I have a question about indexing an array on FPGA. Concretely, I have a constant size 1 M table and want pieces of index of size N of it. Unfortunately, when you try to compile I get the error message: the tables with variable sizes running are not supported. Is there a work-around nice for who?

See you soon

Hello

Well, I don't have first play dynamicaly with the Index of the Array of subset function entry.

This is not supported in a SCTL, so that the planned behavior.

There are several workaround solutions to do this, depending on how you design your design.

1 point by Point approach (as usually made it in FPGAs), using a function table of Index on the RefArray and with the use of counters to keep track of the Index, and evantualy count each sample collected.

This means that every cycle, you have an example that needs to be addressed, you don't work with a tableau more out.

2. same as 1, but using a BRAM I32 element as an interface in the screenshot gave you, I understand that your table with a value of several KBs, which can be a problem in the long term for your design.

3. using a FPGA IP, you could build something like this:

You can use a loop in the context IP FPGA that auto-index the RefArray, to pick up the samples you want, in your sub-table.

This means that you can always work with a table in the output, but the cost will be that you can not leave the subarray in each clock cycle. (use the estimate feature to see the actual flow rate)

4. you can explicitly implement a big MUX, using a box structure. In each case, you provide the desired sub-table.

This is indeed what LV FPGA would do if you where using a standard while loop. Yes, ugly, but no way around it if you want a sub-table, at every clock cycle.

5. the BRAM/DRAM can work with an interface of up to 1024 bits, 32x32bits elements for ex, then you might have used up to 32 items in you case (using the loose I32)

So! In your case, I recommend that you use option 5 if possible:

-Think of BRAMs, your table is starting to get impatient on slices

-Use up to an interface of 1 024 bits on BRAM for a sub-table, do you really need more of 1024 bits a sub-table?

If you don't see how to go from there, I would need more information on what you try to do + all necessary and upstream of the stored data and their data type

Good bye

Tags: NI Products

Similar Questions

  • What is the best way to change the elements of the array (without copies of the table)?

    Hi all

    I am new to Labview, so I'm sorry for the newbie question.

    I'm using Labview check parts in an assembly as a precursor to the test. For my 'list' I create an array of clusters, with the cluster containing a string for the part number and a Boolean value if the latter has been analyzed. I read in my parts list, and then I add on behalf of the party to each cluster in the table. I don't want to do multiple table if possible copies. The code below does not work - I've had the 'matrix' (my Checklist) outside the while loop, because I assumed that the box of items inplace should not output. The cluster created in the inplace elements is correct, but the 'picture' does not change.

    Any help woud be appreciated, I would have preferred a simpler solution elements inplace if possible (once again without making multiple copies).

    Concerning

    Ray

    You do not show the rest of the code, but I'm guessing that your "matrix" is never initialized with all values. Thus, 'replace' will not work since you can't replace an element that does not exist. If the case you are showing is supposed to be the initialization of the table (and based on what you say, it seems as if this is the case), and then abandon the inplace structure. All you need to do is automatic index of your array of strings and just do this:

  • While (list ($index; $value) = each ($array)) {echo "Wtf?" ;}

    Hello comrades!

    I'm new to PHP and now I'm stuck at list(); and each(); functions.

    Can someone explain to me the meaning of:

    list ($index; $value) = each ($array) ?

    I understand that the meaning of the variables in the present code:

    $array [index] = 'value ';

    But what is the meaning of the equation in the parenthesis of the cycle while ?

    Thank you people!

    DissidentPJ

    ya that's how to use it. I had to search what each() done haha coz I do not use it

  • Why an amplification of the RAM does not change the index performnance of windows vista?

    Why an amplification of the RAM does not change the index performnance of windows Vista?

    Hello

    I m not very well, but maybe you have more than 3 GB of RAM and Vista 32 bit.
    Usually the 32 bit OS is capable to manage and send only 3.2 GB.
    The more than 3.2 GB RAM will not operating system used and therefore would not increase the index
    In addition the laptop will be not really faster after upgrading RAM. You will notice better performance using applications at the same time, but this does not affect the index of Vista.
    But this is only my personal hypothesis.

    Welcome them

  • Extract the supplied index value of array element

    Hello

    A similar question might have been asked before, but I couldn't find one that exactly matches what I want. Also, I'm using labview 8.5 so could not read most of the views that you guys tied with other solutions.

    The files that I use are attached. Test_FIFO_TimeTagging-Nov16 - try1.vi is the main vi.

    The absolute time in milliseconds in the table of resorption. As can be seen, it is derived from the berries Micro2 and Macro2. I want the user can specify the duration, that is, whether the current item in the table of absorption has a value greater than the value of the user entered, so I want the index of this item in the resorption so that I can use this index to create Micro2 and Macro2 subtables that contain only items from index 0 to index I get resorption.

    I do not know how to retrieve the index of an array given the value of the element, so can't go forward.

    Thank you

    Kaiser

    Hey Kaiser,

    the function that you need is 'threshold 1 d table '. (I guess that your time values are sorted, otherwise using subdashboards makes no sense...)

  • Difficulty the front Dimension of the array, but allow the user to change the size of the array

    Hello

    I know there are a few other posts on table and scroll bars but mine is a little different. I want to have the physical size of the fixed table control and allow the user to change the size of the array as required and a scroll bar if the number of elements exceeds the specified physical dimension. I wouldn't mind if, at the end of the scroll bar, the user sees an uninitialized element.

    Thank you very much

    Hello

    The problem I have with the property Num Row node is it seems to replace the scroll bar. Whenever I try to change the line number, the table automatically resizes its physical size on the front and the scroll bar has no effect.

    However, I solved the problem by taking row completely digital. I just said if the table size is > to a constant value (i.e. 3), add a scroll bar and my front panel dashboard to be a size larger than what the value of this constant is size. Once I begin to add values in sequential order and I get to the fourth value, the scroll bar is added and the scroll bar has a feature where it adds an element of null for you, so if I fill this null element I just increased the size of the table and another null element appears underneath.

    Thanks for the help

  • Puzzled by changing the size of the array of Bell Curve (or made gaussien)

    I use an instrument which entered a table 1 d signal. When you draw the it, it looks a lot like a Gaussian function (it looks very good too).

    What I want to do is to change the size of the array of this input function (basically I want to increase the size of table).

    For example, when you look at the picture attached, you will see that the size of the curve in the picture on the left, which is the GROSS ENTRY, 70 =.

    What I want to do is to change this size to a number of interest (for example, let's say 80)...

    So basically I want to insert 10 new numbers in the table (in random places), but I want these 10 numbers to fit on the best-fit-the signal line (like you see in the image to the right).

    So I tried to use Gaussian worthy, and cubic spline worthy... etc but none of these features allow me to change the size of the table of the output to adapt.

    Any of them do not give you the equation of the line of best - fit either... so I can't solve Y for a known X.

    It is very important for me to continue my project.

    Thank you very much

    Look at the palette under Interpolation in the math palette.  You can find something that will work for you.  It will not add points on the equation, but should allow you to get more points along your curve.

    Lynn

  • change the index

    create index index_lib on BOOK_DETAIL (ID);


    I want to change the index.

    drop and re-create the index.

    Drop index index_lib1;

    create index index_lib1 on TB_USER (lower (USERID));

    Rebuild will rebuild just the index based on the existing settings. If necessary you can change storage settings

  • Change the index file in the tabular presentation

    OK, this is probably the most stupid and at the same time more simple question ever, but I couldn't find an answer until now

    I use Dreamweaver CS3 and want to build a very simple page with three columns and two rows, where a file is links to each cell. I can set up very well, line up a file for each cell, everything seems correct, but...

    .. If I open the index by the file manager file, even though I see the index page, I can only work directly in the built-in secondary files (and their file names appear in the tab at the top). But I would also like to work in the index file, i.e. change the size of the columns, etc. file names. How can I directly edit the index file (with the exception of the use of an external text editor?).

    Thx for your help!

    Sorry for the confusion between you

    It is an html file and I want to modify it using Dreamweaver.

    The link you provided gave me a clue where to check...

    I activated--> view-->--> frame borders Visual AIDS

    Now, I can see the different frames and edit them and also to change the index file itself.

    So thx for your reply, it has been useful

  • Dynamic release of variable size of dispatch class method array on FPGA

    I have a parent on the FPGA class that will serve as a model/framework for future code which is developed. I had planned on creating a class of the child and by substituting a few methods. The child class constant would have fallen on the schema so that the compiler would have no trouble knowing which method (parent or child) should be used (i.e. the parent method will in fact never used and will not be compiled with the main code). The output of one of the methods is a table. This table will have a different size depending on the application. I set the size of array as a variable. In the method of the child, there is no doubt about the size of the array so that the compiler must be able to understand. However, when I try to compile, I get an error on the size of the array. I can't figure a way around it. Any thoughts would be greatly appreciated!

    Thanks, Patrick

    The question implies the use of the register shift unitialized. On the first iteration of the loop, the value that comes out of the shift register is the default value for the data type, which is an empty array for a table (size zero). Therefore, unless wire you a table empty for the shift register to the right, the size of the array cannot infer statically by the compiler.

    To resolve this problem, you must feed an initial value for the table. Here, I just used the function of the matrix, but if you need to have a separate method that returns an array of default or the size of the array that will work as well.

  • Can I use a digital control to change the illustrated index of an array?

    Hey people,

    This could be one of these questions, get feedback 'why would you do?', but I wonder if there is a fairly simple solution, I don't know everything...

    I know that tables are not exactly gems when it comes to claims for benefits, but with my particular application, if I could get a digital control to define what the array index appears, it would be great.  In addition, assuming that it is possible, then I think I could find a way to have two Boolean values which would increment/decrement the element indicated by updating the digital too...

    Any ideas?

    A popular entry!

    THX

    Is that what you wanted to achieve

  • Boolean index in the array

    In Matlab, often use a Boolean array to access the specific values in a table.

    It is a good way to reduce the itterative loops and improve the speed of the code.

    I'm trying to find a way to do this in a Mathscript node, otherwise the code takes forever to run.

    Common code in Matlab and Mathscript:

    a = [1,2,3,4,5]; % This is normally a much larger range

    b = [1,0,1,0,1]; %I whether Boolean, but by default it's double

    c = b > 0;  b change % to boolean

    d = [9,9,9,9,9];

    The Matlab code is:

    d (c) = a (c);

    d

    > d = [1 9 3 9 5]

    If I run the above in Mathscript, I get the following error:

    In Mathscript, to achieve the same result "d" I currently have this:

    for i = 1:length (d)

    If c (i) == 1

    d (i) = a (i);

    end

    end

    d

    > d = [1 9 3 9 5]

    A slightly faster version is:

    for i = 1:length (d)

    j = 1;

    If c (i) == 1

    e (j) = c (i);

    j = j + 1;

    end

    end

    d (e) = (e);

    d

    > d = [1 9 3 9 5]

    Any ideas?

    Thank you

    Hello

    The code you have posted works fine in the MathScript in LabVIEW 2009 node as well as in the MathScript window and the MathScript node in LabVIEW 8.6.  As such, I'll assume that you have found an error in the window of MathScript in LabVIEW 2009.  We have already identified this problem and currently filed the bug report 151999 for her.  You see error message did not come through in your post, so I guess it is-90026: ' indexes for an indexing operation matrix must be real and positive integers. "  The problem is that we do not treat the indexing variable 'c' as a boolean type.  As a result, it reports an error when it tries to use the index 0 instead of a fake.  We are working on a fix for a future version.

    To work around the problem in the MathScript window, you can use find instead of any Boolean indexing command.  It should integrate more quickly than the implementation of loop that reference you.  Instead of
    d (c) = AC;
    use
    d (Find (c)) = a (find (c));

    Grant M.
    Staff software engineer | LabVIEW MathScript | National Instruments

  • Detailed index into the array

    Hello!

    I did a VI control card relay and relay settings (eight relay - power) is specified in an array of Booleans. line 1 is the first setting for eight (eight columns, one for each relay) relays and the corresponding digital control gives the time in seconds for this specific relay setting. Line will run two when line 1 is complete, then third row and so on. A user came up with the suggestion; When it has several settings settings as much as 40/lines - it is difficult for him to navigate in the table when he wants to make changes. He suggested I have add a number to each line and also if possible have different markers on each column (for example, colors different lamp for each column). I've attached a picture to show you what I mean.

    My only idea is to use labels, but find it me difficult to do in a generic and dynamic way.

    I am grateful for any suggestions or solutions!

    Best regards

    Mikael - Peterson

    I agree with Saverio.

    Customize a set of Boolean controls using the images you have now.

    Put together them in a cluster

    Place the cluster in a table

    resize the table down

    Right click on the table and hide the index and display the vertical scroll bar.

    When you are finished, you should have a chart every step of the procedure.

    You can add a 'step number' on the cluster to make it easy for what is the step number.

    Ben

  • Forced ignoring update changed variables FM

    Environment: Tech Comm Suite, fully patched (FM 8, 7 HR)
    Location: HR project based on a book by FM added by reference.
    What's happening: in this project, the variables change value only. (there is no new that is added and no deleted, but their values change.) During a forced update, HR does not update the values of the variables FM.
    Comment: The project attributes are stored in the apj files and style sheets. What are (rightly) left intact during an update. Variables stored in rhvariable.apj should be updated, perhaps eventually.
    Solution: Create several versions of rhvariable.apj and copy one hand in the project directory.

    Does anyone know a better way?

    As a result of the foregoing: rename file PDC (and so generate a new) made no difference.

    Adding a new variable before the update doesn't make any difference.

    Remove BOTH the PDC and the rhvariable.apj solved the problem file.

    Conclusions:
    1. the load/update product first of all of the *.apj (and other system files).
    2. It then caches in the file of the CPD, presumably for performance reasons.
    3. I've noticed that (as the new I defined above), the variables that are not actually referenced in the project documents, not get pulled.
    4. to change from something strength *.apj, you use the process described above.
    5. the above does not have OCD, layout index. HR rebuilt the FM, and all customizations must be restored by hand. If there is no structural changes in the project, you can get away with replacing *.hhc files and backups *.hhk.

  • Have an impact on changes in copy/change/return index?

    Hello

    I use the latest version of Berkeley DB XML (2.4.16).
    I use it to store relevant xml of .docx files archives... you can consider them as models in a document-generation application.

    The transformation of copy/change/return is used in several places.
    I also added the clues which can improve the queries that I am trying to make.

    I am interested in finding if index impact when using the transformations of copy/modify/back (it does not seem they help on the tests I've done).

    Here is the XQuery script that I use (I also wrote an xpath evaluation function that deals with simple XPath expressions that may contain attributes or the index... but it doesn't have an impact on the overall execution time):
    declare variable $productView as node() external;
    declare variable $templateName as xs:string external;
    declare variable $expressionValues as node() external;
    declare variable $docxMetadata as node() := doc('dbxml:/docxTemplates/templates.dbxml/metadata.xml')/templates;
    declare variable $customIdentifier as xs:string := fn:data($docxMetadata/template[name = $templateName]/dsStoreItemId) cast as xs:string;
    
    declare function local:getCustomXmlBlocksNode($template as xs:string) 
    {
         doc(fn:concat('dbxml:/docxTemplates/templates.dbxml/', $template, '_blocks.xml'))/*
    };
    
    declare function local:if-absent( $arg as item()* ,
        $value as item()* )  as item()* {
           
        if (exists($arg))
        then $arg
        else $value
    };
     
    declare function local:replace-multi($arg as xs:string?, $changeFrom as xs:string*, $changeTo as xs:string*) as xs:string? 
    {
         if (count($changeFrom)>0)
         then local:replace-multi
         (
              replace($arg, $changeFrom[1], local:if-absent($changeTo[1],'')), 
              $changeFrom[position() > 1], 
              $changeTo[position() > 1]
         )
            else $arg
    };
    
    declare function local:copy-attributes($copyTo as element(), $copyFrom as element())  as element() 
    {
         element { node-name($copyTo)}
                    { $copyTo/@*[not(node-name(.) = $copyFrom/@*/node-name(.))],
                  $copyFrom/@*,
                  $copyTo/node() }
     };
     
    declare function local:add-attributes 
      ( $elements as element()* ,
        $attrNames as xs:QName* ,
        $attrValues as xs:anyAtomicType* )  as element()? {
           
       for $element in $elements
       return element { node-name($element)}
                      { for $attrName at $seq in $attrNames
                        return if ($element/@*[node-name(.) = $attrName])
                               then ()
                               else attribute {$attrName}
                                              {$attrValues[$seq]},
                        $element/@*,
                        $element/node() }
    };
    
    declare function local:getEvaluation($expr as xs:string) as xs:string
     {
          fn:string($expressionValues/expressions/expression[name eq $expr]/value)
     };
    
    declare function local:renderSelectionParts($selPartName as xs:string*) as element()*
    {
         for $name in $selPartName
         return local:renderDocumentPart($name)
    };
    
    declare function local:evalPath($path as xs:string, $xml as node()*) as node()*
    {
       local:evalPathImpl(tokenize($path, "/"), $xml)
    };
    
    declare function local:evalPathImpl($steps as xs:string*, $xml as node()*) as node()*
    {
       if(empty($steps)) then $xml
       else if($steps[1] = "") then local:evalPathImpl(subsequence($steps, 2), $xml/root())
       else if(starts-with($steps[1], "@")) then local:evalPathImpl(subsequence($steps, 2), $xml/@*[name() = substring($steps[1], 2)])
       else if(ends-with($steps[1], "]")) then local:evalPathImpl(subsequence($steps, 2), $xml/*[name() = substring-before($steps[1],  "[")][fn:string(position()) = substring-before(substring-after($steps[1], "["), "]" )])
       else local:evalPathImpl(subsequence($steps, 2), $xml/*[name() = $steps[1]])
    };
    
    declare function local:renderRepeater($docPartName as xs:string, $blockNode as node(), $content as node(), $indexNames as xs:string*, $indexValues as xs:string*) as node()*
    {
         let $count := fn:count(local:evalPath(local:replace-multi(fn:string($blockNode/iw:ProductViewXPath), $indexNames, $indexValues), $productView))
         for $index in 1 to $count
              return local:renderRepeaterI($docPartName, $blockNode/iw:CCId, $content, ($indexNames, $blockNode/iw:KIdx/text()), ($indexValues, fn:string($index)))
    };
    
    declare function local:renderRepeaterI($docPartName as xs:string, $parentCCId as xs:string, $content as node(), $indexNames as xs:string*, $indexValues as xs:string*) as node()*
    {
         copy $c := $content
         modify (
              for $ccBlock in local:getCustomXmlBlocksNode($docPartName)/iw:Block[fn:string(iw:ParentContentControlId) eq $parentCCId]
              let $cc := $c//w:sdt[w:sdtPr/w:id/@w:val eq $ccBlock/iw:CCId]
              return
              (
                   if($ccBlock/iw:Type eq 'CalculatedControl') then 
                        insert node local:getDataBindingNode(local:replace-multi(fn:string($ccBlock/iw:ProductViewXPath), $indexNames, $indexValues)) into $cc/w:sdtPr
                   else if($ccBlock/iw:Type eq 'RepeaterDocPart') then
                        replace node $cc/w:sdtContent with element w:sdtContent { local:renderRepeater($docPartName, $ccBlock, $cc/w:sdtContent, $indexNames, $indexValues) }
                   else if($ccBlock/iw:Type eq 'RepeaterTable') then
                        replace node $cc/w:sdtContent/w:tbl/w:tr[last()] with local:renderRepeater($docPartName, $ccBlock, element content {$cc/w:sdtContent/w:tbl/w:tr[last()]}, $indexNames, $indexValues )
                   else ()               
              )
         )
         return $c/*
    };
    
    declare function local:getDataBindingNode($xpath as xs:string) as node()
    {
         local:add-attributes( element w:dataBinding{}, 
              ( xs:QName('w:prefixMappings'), xs:QName('w:xpath'), xs:QName('w:storeItemID') ), 
              ( "xmlns:iwpvp='http://interwoven.com/WordML07/ProductViewPlaceholders'", $xpath, $customIdentifier ) 
         )
    };
    
    declare function local:renderDocumentPart($docPartName as xs:string) 
    {
         copy $c := doc(fn:concat('dbxml:/docxTemplates/templates.dbxml/', $docPartName, '.xml'))/w:document/w:body
         modify (
              for $sectPr in $c/w:sectPr
              return delete nodes $sectPr,
              for $ccBlock in local:getCustomXmlBlocksNode($docPartName)/iw:Block[fn:string-length(iw:ParentContentControlId)=0]
              let $cc := $c//w:sdt[w:sdtPr/w:id/@w:val eq $ccBlock/iw:CCId]
              return
              (
                   if($ccBlock/iw:Type eq 'Expression') then 
                        replace node $cc/w:sdtContent/w:p with local:copy-attributes( element w:p {element w:r { element w:t { local:getEvaluation($ccBlock/iw:BindValue) } } }, $cc/w:sdtContent/w:p )
                   else if($ccBlock/iw:Type eq 'Switch') then
                        replace node $cc/w:sdtContent/* with local:renderDocumentPart(fn:string($ccBlock/iw:Items/iw:Item[local:getEvaluation(fn:string(iw:Info)) eq local:getEvaluation(fn:string($ccBlock/iw:BindValue))]/iw:DocPart))
                   else if($ccBlock/iw:Type eq 'Selection') then
                        replace node $cc/w:sdtContent/* with local:renderSelectionParts(fn:string($ccBlock/iw:Items/iw:Item[iw:Selected eq 'True']/iw:DocPart))
                   else if($ccBlock/iw:Type eq 'RepeaterDocPart') then
                        replace node $cc/w:sdtContent with element w:sdtContent { local:renderRepeater($docPartName, $ccBlock, $cc/w:sdtContent, (" "), ("")) }
                   else if($ccBlock/iw:Type eq 'RepeaterTable') then 
                   (
                        let $tr := $cc/w:sdtContent/w:tbl/w:tr[last()]
                        return replace node $tr with local:renderRepeater($docPartName, $ccBlock, element content {$tr}, (" "), (""))
                   )
                   else if($ccBlock/iw:Type eq 'DocumentPart') then
                        replace node $cc/w:sdtContent/* with local:renderDocumentPart($ccBlock/iw:BindValue cast as xs:string)
                   else ()               
              )
         ) 
         return $c/*
    };
    
    declare function local:renderDocument() 
    {
         copy $c := doc(fn:concat('dbxml:/docxTemplates/templates.dbxml/', $templateName, '.xml'))/w:document
         modify 
         (
              for $ccBlock in local:getCustomXmlBlocksNode($templateName)/iw:Block[fn:string-length(iw:ParentContentControlId)=0]
              let $cc := $c//w:sdt[w:sdtPr/w:id/@w:val eq $ccBlock/iw:CCId]
              return
              (
                   if($ccBlock/iw:Type eq 'Expression') then 
                        replace node $cc/w:sdtContent/w:p with local:copy-attributes( element w:p {element w:r { element w:t { local:getEvaluation($ccBlock/iw:BindValue) } } }, $cc/w:sdtContent/w:p )
                   else if($ccBlock/iw:Type eq 'Switch') then
                        replace node $cc/w:sdtContent/* with local:renderDocumentPart(fn:string($ccBlock/iw:Items/iw:Item[local:getEvaluation(fn:string(iw:Info)) eq local:getEvaluation(fn:string($ccBlock/iw:BindValue))]/iw:DocPart))
                   else if($ccBlock/iw:Type eq 'Selection') then
                        replace node $cc/w:sdtContent/* with local:renderSelectionParts(fn:string($ccBlock/iw:Items/iw:Item[iw:Selected eq 'True']/iw:DocPart))
                   else if($ccBlock/iw:Type eq 'RepeaterDocPart') then
                        replace node $cc/w:sdtContent with element w:sdtContent { local:renderRepeater($templateName, $ccBlock, $cc/w:sdtContent, (" "), ("")) }
                   else if($ccBlock/iw:Type eq 'RepeaterTable') then 
                   (
                        let $tr := $cc/w:sdtContent/w:tbl/w:tr[last()]
                        return replace node $tr with local:renderRepeater($templateName, $ccBlock, element content {$tr}, (" "), (""))
                   )
                   else if($ccBlock/iw:Type eq 'DocumentPart') then
                        replace node $cc/w:sdtContent/* with local:renderDocumentPart($ccBlock/iw:BindValue cast as xs:string)
                   else ()               
              )
         ) 
         return $c
    };
    
    element mainDocumentContent 
    {
         copy $c := local:renderDocument()
         modify 
         (
              for $cc in $c//w:sdt
              where fn:starts-with($cc/w:sdtPr/w:tag/@w:val, 'iw')
              return delete nodes $cc/w:sdtPr/w:placeholder/*,
              for $pictureCC in $c//w:sdt
              where $pictureCC/w:sdtPr/w:tag/@w:val eq 'iwPictureBlock'
              return delete nodes $pictureCC/w:sdtContent//a:blip/@r:embed,
              for $simpleCC in $c//w:sdt
              where fn:exists( fn:index-of( ('iwValueBlock', 'iwDateBlock', 'iwPictureBlock'), $simpleCC/w:sdtPr/w:tag/@w:val ) )
              return replace value of node $simpleCC/w:sdtPr/w:dataBinding/@w:storeItemID with $customIdentifier,
              let $sdtNodes := $c//w:sdt
              for $i in 1 to fn:count($sdtNodes)
              return replace value of node $sdtNodes[$i]/w:sdtPr/w:id/@w:val with $i
         ) 
         return $c
    }, 
    element customXmlPvpUri 
    { 
         fn:string($docxMetadata/template[name = $templateName]/customXmlPvpUri) 
    }
    ,
    element templatePath
    {
         fn:string($docxMetadata/template[name = $templateName]/path) 
    }
    Published by: donde on November 3, 2008 07:59

    Hello

    Index will not help the copied data. The indexes are limited to a particular container. Queries on this container will search for the appropriate indexes to optimize the query expression. Copied content is placed in a temporary storage that actually has a lot as a container, but is created without index so that queries that operate on this temporary copied content can be optimized using indexes.

    It's an interesting idea to think about the indexing of content, but there are all kinds of questions, I can think of that might occur. In any case, it's something to think about.

    If there is any way for you to cache and reuse the partially processed templates in a real (indexed) container'd win you indexes a bit more. Such a container could be in memory, so it serves as a pure cache. Should still transactions if you have concurrent access but it would disappear when the application is restarted. Just a thought.

    Kind regards
    George

Maybe you are looking for

  • When I right click on an image on Ebay.be, I can't safely on my PC.

    When I right click on an image on Ebay.be, I can't safely on my PC. This does not work when I connect on Ebay.de but not on ebay.be.

  • New graphics card for Diablo 3

    Good evening everyone Model #: m8530fProduct #: KT334AAR-ABASerial number: MX88250MR1Software Build #: 83NAv6PrA4Service ID #: 091-908PCBRAND: Pavilion Don't know what you need so there's all this I heard say that getting a average graphics card it m

  • VI recorder: point decimal / comma

    Hello I use VI Logger (MAX 3.1.1.3004) to acquire the temperature (8 thermocouples). I have some problems when exporting data to excel. Indeed, the decimals are separated by a comma, that excellent sees as a field delimiter. Of course, if I export a

  • Forum feedback MOTOBLUR?

    Is Hi there, there any opportunity to give feedback on Motoblur? There are a few usability problems and results that are easily fixed, I'm sure, but you need a broadcast (which will be listened to!). F' f'rinstance: Twitter update: is the convention

  • Server 2008 r2 Regestry key merge to a wrong setting

    I am rebuilding a Server 2008 r2 Enterprise full installation. I have a new and unusual problem merging registry keys from my old server running 2008 r2 Enterprise full installation as well. When I merge the keys he come back successful, but the serv