• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. exists vs. member vs. memq

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 143
  • Views 18908
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

exists vs. member vs. memq

Yaosan
Yaosan over 14 years ago

When checking if certain item can be found in a list, we can use either exists or member:

exists( i '("a" "b" "c") i == "b" )

member( "b" '("a" "b" "c") )

I'm wondering if one of them is faster than the other.Since SKILL Lint always suggest to use memq instead of member,using exists will avoid those suggestion from showing up.

Now that we have a list of string, memq can't be used. Does it make sense to convert our list of string to list of symbol first then use memq to optimize this process? (assume the list can be short or very long i.e. more than 500 elements)

For example:

myList = '("a" "b" "c")
memq( 'b foreach( mapcar i myList concat(i) ) )

As mentioned in the beginning, all we care is if an item can be found in the list i.e. whether the return is nil or non-nil. Thanks for any feedback.

  • Cancel
Parents
  • dmay
    dmay over 14 years ago

    If performance is most important, then use a table.

    myTbl = makeTable("myTbl" nil)
    myTbl["a"]=t
    myTbl["b"]=t
    myTbl["c"]=t
    or
    foreach(item myList
        myTbl[item]=t
    )
    then check for existence in the table:
    if(myTbl[x] then ...

    The table will be MUCH faster than using member/memq/exists for lists.

    Derek

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • dmay
    dmay over 14 years ago

    If performance is most important, then use a table.

    myTbl = makeTable("myTbl" nil)
    myTbl["a"]=t
    myTbl["b"]=t
    myTbl["c"]=t
    or
    foreach(item myList
        myTbl[item]=t
    )
    then check for existence in the table:
    if(myTbl[x] then ...

    The table will be MUCH faster than using member/memq/exists for lists.

    Derek

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information